我有一个字节串"\x56\x20"
,它是两组数据,一个(12位)和b(4位)。解码字节间二进制数据
的紧缩数据预计:
A = 86 B = 2
其中:
a = int("056", 16)
b = int("2", 16)
我知道我可以使用binascii
到字节字符串转换为十六进制字符串然后对它进行切片魔术,但这似乎很混乱。
我看着struct
,但无法找出一个方法来拆分12位/ 4位。
>>> import binascii
>>> two_octets = "\x56\x20"
>>> hex_str = binascii.hexlify(two_octets)
>>> temp_a, temp_b = hex_str[:2], hex_str[2:]
>>> a_part, b_part = reversed([c for c in temp_b])
>>> int(a_part + temp_a, 16)
86
>>> int(b_part, 16)
2
>>>
有没有更清洁的方法?
如果'\ x56 \ x20'要在12位和4位部分分割,则得到1378和0,*不是* 86和2 ..除非这是小的-endian,因此应该被解释为'\ x20 \ x56'。 –
好点,我只是看着十六进制编辑器中的原始字节,所以是的,它看起来应该是\ x20 \ x56。 – monkut