python - 逐位形成字节并连接字节

标签 python arrays bit bitarray

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

关于python - 逐位形成字节并连接字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27827836/

相关文章:

java - 在 Java 中设置自定义二进制数据消息的最简单方法是什么?

assembly - 如何将两个字节转换为一个 16 位数字?

c - 如何生成 16 位查找表来计算设置位

javascript - 这个 JavaScript 多维数组有什么问题?

python - 从 QDockWidget 附加和分离外部应用程序时的问题

python - 如何匹配字符串中任意位置的两个字符

python - 提高循环效率

arrays - MongoDB - 更新多个数组中的元素

php - 具有特定标准的笛卡尔积

python - 同时使用类函数和静态方法? (Python)