逐位形成字节并连接字节

时间:2015-01-07 20:12:09

标签: python bytearray bit bytestring bitarray

我正在尝试通过TCP套接字发送字节消息。我有一个静态字节是十六进制字0xaa。在静态字节上,我需要连接动态字节,MSB始终为0,然后我有6-4的位是可变的(从000到100),而3-0的位也是可变的(从0000到1000)。做这个的最好方式是什么?我已经看到我可以使用bitarray中的BitArraybitstring类,但我想知道这个问题的最佳解决方案是什么。此外,我需要知道如何将bitarray转换回字节,以便我可以通过TCP发送它。

我需要的例子:

leading_byte = 0xaa
bit7 = 0 (bit)

options = { 'a' : 000 (bits), 'b' : 001 ...}
versions = { 'i' : 0000 (bits), 'i' : 0001 ...} 
bits6_4 = options['a']
bits3_0 = versions['i']

byte_message = leading_byte + bit7 + bit6_4 + bits3_0

socket.send(byte_message)

1 个答案:

答案 0 :(得分:2)

使用位移和普通chr

byte_message = chr(0xaa) + chr((bits6_4 << 4) | bits3_0)