逐位形成字节并连接字节
Forming bytes bit by bit and concatenating bytes
我正在尝试通过 TCP 套接字发送字节消息。我有一个静态字节,它是十六进制字 0xaa
。在静态字节上,我需要连接 MSB 始终为 0 的动态字节,然后我有 6-4 的位是可变的(从 000 到 100),而 3-0 的位也是可变的(从 0000 - 1000)。做这个的最好方式是什么?我已经看到我可以使用 bitstring
中的 bitarray
和 BitArray
class,但我想知道这个问题的最佳解决方案是什么。我还需要知道如何将位数组转换回字节,以便我可以通过 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)
使用位移和普通chr
:
byte_message = chr(0xaa) + chr((bits6_4 << 4) | bits3_0)
我正在尝试通过 TCP 套接字发送字节消息。我有一个静态字节,它是十六进制字 0xaa
。在静态字节上,我需要连接 MSB 始终为 0 的动态字节,然后我有 6-4 的位是可变的(从 000 到 100),而 3-0 的位也是可变的(从 0000 - 1000)。做这个的最好方式是什么?我已经看到我可以使用 bitstring
中的 bitarray
和 BitArray
class,但我想知道这个问题的最佳解决方案是什么。我还需要知道如何将位数组转换回字节,以便我可以通过 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)
使用位移和普通chr
:
byte_message = chr(0xaa) + chr((bits6_4 << 4) | bits3_0)