当前位置: 首页>>代码示例>>Python>>正文


Python BitArray.invert方法代码示例

本文整理汇总了Python中bitstring.BitArray.invert方法的典型用法代码示例。如果您正苦于以下问题:Python BitArray.invert方法的具体用法?Python BitArray.invert怎么用?Python BitArray.invert使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在bitstring.BitArray的用法示例。


在下文中一共展示了BitArray.invert方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: accbits_for_blocknum

# 需要导入模块: from bitstring import BitArray [as 别名]
# 或者: from bitstring.BitArray import invert [as 别名]
def accbits_for_blocknum(accbits_str, blocknum):
    '''
    Decodes the access bit string for block "blocknum".
    Returns the three access bits for the block or False if the
    inverted bits do not match the access bits.
    '''
    bits = BitArray([0])
    inverted = BitArray([0])

    # Block 0 access bits
    if blocknum == 0:
        bits = BitArray([accbits_str[11], accbits_str[23], accbits_str[19]])
        inverted = BitArray([accbits_str[7], accbits_str[3], accbits_str[15]])

    # Block 0 access bits
    elif blocknum == 1:
        bits = BitArray([accbits_str[10], accbits_str[22], accbits_str[18]])
        inverted = BitArray([accbits_str[6], accbits_str[2], accbits_str[14]])
    # Block 0 access bits
    elif blocknum == 2:
        bits = BitArray([accbits_str[9], accbits_str[21], accbits_str[17]])
        inverted = BitArray([accbits_str[5], accbits_str[1], accbits_str[13]])
    # Sector trailer / Block 3 access bits
    elif blocknum in (3, 15):
        bits = BitArray([accbits_str[8], accbits_str[20], accbits_str[16]])
        inverted = BitArray([accbits_str[4], accbits_str[0], accbits_str[12]])

    # Check the decoded bits
    inverted.invert()
    if bits.bin == inverted.bin:
        return bits
    else:
        return False
开发者ID:zhovner,项目名称:mfdread,代码行数:35,代码来源:mfdread.py

示例2: hamming_search

# 需要导入模块: from bitstring import BitArray [as 别名]
# 或者: from bitstring.BitArray import invert [as 别名]
def hamming_search(b, bit, radius, current_radius, H):
    if current_radius == 0:
        H[current_radius].append(b.copy())

    if current_radius == radius:
        return
    for i in range(bit+1, b.length):
        b2 = BitArray(b.copy())
        b2.invert(i)
        H[current_radius+1].append(b2.copy())
        hamming_search(b2, i, radius, current_radius+1, H)
开发者ID:axeltidemann,项目名称:propeller,代码行数:13,代码来源:aqbc_utils.py

示例3: _mutate

# 需要导入模块: from bitstring import BitArray [as 别名]
# 或者: from bitstring.BitArray import invert [as 别名]
 def _mutate(self):
     new_val = BitArray(self._default_value).copy()
     start, end = self._start_end()
     new_val.invert(range(start, end))
     self.set_current_value(Bits(new_val))
开发者ID:cisco-sas,项目名称:kitty,代码行数:7,代码来源:mutated_field.py

示例4: change_one_bit

# 需要导入模块: from bitstring import BitArray [as 别名]
# 或者: from bitstring.BitArray import invert [as 别名]
def change_one_bit(input):
    bitarray = BitArray(hex=input)
    bitarray.invert(0)
    newinput = bitarray.hex
    return newinput, bitarray
开发者ID:chesarin,项目名称:fcm801-Spring2014,代码行数:7,代码来源:phase2.py

示例5: Client

# 需要导入模块: from bitstring import BitArray [as 别名]
# 或者: from bitstring.BitArray import invert [as 别名]

#.........这里部分代码省略.........
        logging.info('dividing up file into %s pieces', self.num_pieces)
        self.bitfield = BitArray(self.num_pieces)
        last_piece_length = self.file_length - (self.num_pieces - 1) * length
        for i in range(self.num_pieces):
            if i == self.num_pieces - 1:
                length = last_piece_length
            pieces.append(Piece(self, i, length, hash_list[i], self.dload_dir))
        self.pieces = pieces
        self.piece_queue = PieceQueue(pieces)

    def setup_download_directory(self):
        dir_name = self.torrent
        if dir_name.endswith('.torrent'):
            dir_name = dir_name[:-8]
        self.dload_dir = os.path.join(os.path.abspath(os.curdir), dir_name)
        try:
            os.makedirs(self.dload_dir)
        except OSError:
            if not os.path.isdir(self.dload_dir):
                raise SystemExit('Cannot create directory to download torrent files into. Please check if a file named ' + dir_name + ' exists') 
                # raise OSError('Cannot create directory to download torrent files to.')

    def check_if_dload_file_exists(self):
        file_path = os.path.join(self.dload_dir, self.file_name)
        if os.path.exists(file_path):
            raise SystemExit('This file has already been downloaded.')
            # Do something to cancel the rest of the setup

    def add_piece_to_queue(self, piece):
        self.piece_queue.put(piece)

    def add_piece_to_bitfield(self, index):
        if not self.bitfield[index]:
            self.bitfield.invert(index)
            self.manage_requests()
        else:
            logging.warning('Should never get save same piece more than once!')

    def add_peer_to_piece_peer_list(self, piece_index, peer):
        # print 'Adding piece', piece_index, 'to peer', peer
        self.pieces[piece_index].add_peer_to_peer_list(peer)

    def manage_requests(self, num_pieces=1):
        logging.info('Sending more piece requests')
        logging.info('Piece queue has %s pieces', self.piece_queue.length())
        if not self.piece_queue.empty():
            self.manage_piece_queue_state();
            for i in xrange(num_pieces):
                self.request_next_piece();
            logging.info('Cleaning up piece queue')
        else:
            # Count outstanding requests to decide when to go into endgame
            self.torrent_state = 'endgame'
            self.start_endgame()

    def start_endgame(self):
        self.blasted_requests = []
        for i in xrange(ENDGAME_MAX_BLASTS):
            self.send_endgame_request()
            
    def send_endgame_request(self):
        block_info = self.select_outstanding_request()
        if block_info:
            self.blasted_requests.append(block_info)
            self.pieces(block_info[0]).request_block_endgame(block_info)
开发者ID:wevial,项目名称:downpour,代码行数:69,代码来源:client.py

示例6: __init__

# 需要导入模块: from bitstring import BitArray [as 别名]
# 或者: from bitstring.BitArray import invert [as 别名]

#.........这里部分代码省略.........
    def peer_stops_choking_client(self):
        self.peer_is_choking_client = False
        if self.am_interested:
            logging.info('Peer unchoked, sending requests now')
            if len(self.request_q) > 0:
                self.flush_request_queue()
            else:
                # TODO: Trace code path here
                self.client.manage_requests(REQUESTS_PER_PEER)

    def peer_is_now_interested(self):
        self.peer_is_interested = True
        # Assuming we always unchoke when receiving interested message
        self.am_choking_peer = False
        self.add_to_message_queue(UnchokeMsg())

    def peer_is_no_longer_interested(self):
        self.peer_is_interested = False
        # TODO: Update request q based on this information

    # When receiving bitfield
    def setup_bitfield(self, bitfield_buf):
        # TODO implement non-naive function for updating interested status
        bitfield = BitArray(bytes=bitfield_buf)
        self.bitfield = bitfield
        for piece_index, bit in enumerate(bitfield):
            if bit:
                self.client.add_peer_to_piece_peer_list(piece_index, self)
        self.am_interested = True
        self.add_to_message_queue(InterestedMsg())
        self.client.manage_requests(1)

    # When receiving have message
    def update_bitfield(self, piece_index):
        if not self.bitfield[piece_index]:
            self.bitfield.invert(piece_index)
            self.client.add_peer_to_piece_peer_list(piece_index, self)
        else:
            raise PeerCommunicationError('Redundant "Have" message.')

    # After request
    def queue_up_block(self, block_info):
        assert not self.am_choking_peer
        block = self.client.get_block(block_info)
        self.add_to_message_queue(BlockMsg(block_info=block_info, block=block))

    # After block message
    def update_and_store_block(self, block_info, block):
        self.outstanding_requests.remove(block_info)
        self.flush_request_queue()
        logging.debug('Storing block length %s beginning at index %s for piece %s',
                block_info[2], block_info[1], block_info[0])
        logging.debug('Actual length of block: %s', len(block))
        if self.client.torrent_state == 'endgame':
            piece = self.client.pieces[block_info[0]]
            piece.cancel_block(block_info, self)
        self.client.add_block(block_info, block)

    # After cancel message
    def clear_requests(self, block_info):
        pass

    def add_request_to_queue(self, block_info):
        if not self.peer_is_choking_client and \
        len(self.outstanding_requests) < REQUESTS_PER_PEER:
            self.send_request_message(block_info)
        else:
            logging.info('Adding block %s to request q', block_info)
            self.request_q.insert(0, block_info)

    def send_cancel_message(self, block_info):
        self.add_to_message_queue(CancelMsg(block_info))

    def send_request_message(self, block_info):
        self.outstanding_requests.append(block_info)
        logging.info('Sending request for block %s', block_info)
        self.add_to_message_queue(RequestMsg(block_info))

    def flush_request_queue(self):
        '''Move requests from holding queue to reactor message queue'''
        logging.info('Can flush up to %s requests', REQUESTS_PER_PEER - len(self.outstanding_requests))
        logging.info('Request q has %s blocks', len(self.request_q))
        while len(self.outstanding_requests) < REQUESTS_PER_PEER and \
            len(self.request_q) > 0:
            next_block_info = self.request_q.pop()
            logging.info('popped block %s off request q', next_block_info)
            self.send_request_message(next_block_info)

    # MESSAGE QUEUE
    def add_to_message_queue(self, msg):
        logging.info('adding message %s to queue', msg)
        self.msg_queue.put(msg)
        # TODO: Make time last msg sent update when its sent, not added to queue
        self.update_time_last_msg_sent()

    def get_from_message_queue(self):
        if self.msg_queue.empty():
            raise Queue.Empty
        else:
            return self.msg_queue.get_nowait()
开发者ID:wevial,项目名称:downpour,代码行数:104,代码来源:peer.py

示例7: main

# 需要导入模块: from bitstring import BitArray [as 别名]
# 或者: from bitstring.BitArray import invert [as 别名]
def main():
	#parser = argparse.ArgumentParser()
	#parser.add_argument('-d', dest='device', action='store', default="/dev/ttyAMA0", help="Serial device path", required=True)
	#parser.add_argument('-o', dest='output', action='store', default=None, help="Output file", required=False)
	#parser.add_argument('-s', dest='stdout', default=1, required=False, help="Print output to stdout")
	#args = parser.parse_args() 

	#if args.device == None:
	if 1:
 		GPIO.setmode(GPIO.BOARD)
		GPIO.setup(bcda0,GPIO.IN)  #AZ0 Red    BCD0 
		GPIO.setup(bcda1,GPIO.IN)  #AZ1 Blue   BCD1
		GPIO.setup(bcda2,GPIO.IN)  #AZ2 Green  BCD2
		GPIO.setup(bcda3,GPIO.IN)  #AZ3 Yellow BCD3
		
		GPIO.setup(bcdb0,GPIO.IN)  #AZ0 Red    BCD0 
		GPIO.setup(bcdb1,GPIO.IN)  #AZ1 Blue   BCD1
		GPIO.setup(bcdb2,GPIO.IN)  #AZ2 Green  BCD2
		GPIO.setup(bcdb3,GPIO.IN)  #AZ3 Yellow BCD3
		
		GPIO.setup(bcdc0,GPIO.IN)  #AZ0 Red    BCD0 
		GPIO.setup(bcdc1,GPIO.IN)  #AZ1 Blue   BCD1
		GPIO.setup(bcdc2,GPIO.IN)  #AZ2 Green  BCD2
		GPIO.setup(bcdc3,GPIO.IN)  #AZ3 Yellow BCD3
		
		
		digit1 = 0
		digit2 = 0
		digit3 = 0

		while (1):
			bcd = BitArray('0b0000')
			if GPIO.input(bcda0):
				bcd.invert(3)
			if GPIO.input(bcda1):
				bcd.invert(2)
			if GPIO.input(bcda2):
				bcd.invert(1)
			if GPIO.input(bcda3):
				bcd.invert(0)
			digit1=bcd.uint
			if digit1 > 9:
				digit1=0

			bcd = BitArray('0b0000')
			if GPIO.input(bcdb0):
				bcd.invert(3)
			if GPIO.input(bcdb1):
				bcd.invert(2)
			if GPIO.input(bcdb2):
				bcd.invert(0)
			if GPIO.input(bcdb3):
				bcd.invert(1)
			digit2=bcd.uint
			if digit2 > 9:
				digit2=0
		
			bcd = BitArray('0b0000')
			if GPIO.input(bcdc0):
				bcd.invert(3)
			if GPIO.input(bcdc1):
				bcd.invert(2)
			if GPIO.input(bcdc2):
				bcd.invert(0)
			if GPIO.input(bcdc3):
				bcd.invert(1)
			digit3=bcd.uint
			if digit3 > 9:
				digit3=0

			bearing = digit1*100 + digit2*10 + digit3
			print bearing

	else:
		print ("Too many parameters")
		parser.print_help()
开发者ID:jennyb,项目名称:spdf,代码行数:78,代码来源:df.py

示例8: element_calulator

# 需要导入模块: from bitstring import BitArray [as 别名]
# 或者: from bitstring.BitArray import invert [as 别名]
def element_calulator(Pulses):

    ch1 = [-1]
    ch2 = [-1]
    ch3 = [-1]
    ch4 = [-1]

    for arg in Pulses:
        if (arg.channel == 'ch1'):
            ch1.append(arg.start)
            ch1.append(arg.end)
        elif (arg.channel == 'ch2'):
            ch2.append(arg.start)
            ch2.append(arg.end)
        elif (arg.channel == 'ch3'):
            ch3.append(arg.start)
            ch3.append(arg.end)
        elif (arg.channel == 'ch4'):
            ch4.append(arg.start)
            ch4.append(arg.end)
            
    tot_length = max(max(ch1),max(ch2),max(ch3),max(ch4))
    del ch1[0]
    del ch2[0]
    del ch3[0]
    del ch4[0]
    
    
    channel1 = BitArray(int=0, length=tot_length)
    channel2 = BitArray(int=0, length=tot_length)
    channel3 = BitArray(int=0, length=tot_length)
    channel4 = BitArray(int=0, length=tot_length)
    for x in range(len(ch1)):
        if (x%2 == 0):
            channel1.invert(range(ch1[x],ch1[x+1]))
        else:
            pass
    
    for x in range(len(ch2)):
        if (x%2 == 0):
            channel2.invert(range(ch2[x],ch2[x+1]))
        else:
            pass    
    
    for x in range(len(ch3)):
        if (x%2 == 0):
            channel3.invert(range(ch3[x],ch3[x+1]))
        else:
            pass
        
    for x in range(len(ch4)):
        if (x%2 == 0):
            channel4.invert(range(ch4[x],ch4[x+1]))
        else:
            pass

    channel1 |= channel2
    channel3 |= channel4
    channel1 |= channel3    
    
    channel1.append('0b0')
    result = []
    count = 0    
    test = BitArray(int = 0, length = 1)
    empty = test.find('0b1')
    
    while (channel1.len != 0):
        
        test = channel1.find('0b1')
        if (test == empty):
            break
        else:
            result.append(channel1.find('0b1'))
            result[count] = result[count][0]
            del channel1[0:result[count]]
            count = count + 1
    
        test = channel1.find('0b0')
        if (test == empty):
            break
        else:
            result.append(channel1.find('0b0'))
            result[count] = result[count][0]
            del channel1[0:result[count]]
            count = count + 1

    return result
开发者ID:hat-lab,项目名称:Hat-lab-code,代码行数:89,代码来源:class_test.py


注:本文中的bitstring.BitArray.invert方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。