将字节数据转换为 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
有人可以帮我将 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