将字节数据转换为 Python 中的位后的处理

Handling of byte data after converting it to bits in Python

有人可以帮我将 7 byte 的数据转换为 Python 中的二进制值吗?

服务器使用 MQTT 接收到 7 byte 数据,我想将此数据转换为二进制,将其分解并从 Python 中的此数据中提取特定长度的位用于进一步处理。

如果我收到:

810be320cab3d

我想将其转换为:

1000000100001011111000110010000011001010101100111101

将它存储在一个变量中,然后将这个值分解成几个部分,这样我就可以使用 str()truncate() 对值进行切片,我希望如此。

这是一个简单的方法:

data = '810be320cab3d'

bits = { '0':'0000', '1':'0001', '2':'0010', '3':'0011'
         '4':'0100', '5':'0101', '6':'0110', '7':'0111',
         '8':'1000', '9':'1001', 'a':'1010', 'b':'1011',
         'c':'1100', 'd':'1101', 'e':'1110', 'f':'1111' }

def main():
    r = ""
    for c in data:
        r += bits[c]
    print r

main()

输出:

1000000100001011111000110010000011001010101100111101
hex2bin_map = {
   "0":"0000",
   "1":"0001",
   "2":"0010",
   "3":"0011",
   "4":"0100",
   "5":"0101",
   "6":"0110",
   "7":"0111",
   "8":"1000",
   "9":"1001",
   "A":"1010",
   "B":"1011",
   "C":"1100",
   "D":"1101",
   "E":"1110",
   "F":"1111",
}

print('0b{:016_b}'.format(int('810be320cab3d', 16)))

较短的版本:

print(bin(int('810be320cab3d', 16))[2:])

输出:

1000000100001011111000110010000011001010101100111101