以下是我要做的事情:
给出了bytearray:
字节组(B' \ XC0 \ X00 \ X00 \ XFE \ XB4 \ XF0 \ XFE \ XB4 \ XB0 \ XFE \ XB4 \ XCE \ XFE \ xb4l \ XFE \ XB6 \ x8fxfe \ xb56 \ XFE \ xb5u \ XFE \ XB4 \ XB1&#39)
PLS:
将其变为新的数组,如[0xC00000,0xFEB4F0,...]
答案 0 :(得分:0)
>>> [(a<<16)+(b<<8)+c for a,b,c in zip(*[iter(bytes[3:])]*3)]
[16692464, 16692400, 16692430, 16692332, 16692879, 16692534, 16692597, 16692401]
答案 1 :(得分:0)
import binascii
x = bytearray(b'\xc0\x00\x00\xfe\xb4\xf0\xfe\xb4\xb0\xfe\xb4\xce\xfe\xb4l\xfe\xb6\x8fxfe\xb56\xfe\xb5u\xfe\xb4\xb1')
[binascii.hexlify(x[i:i+3]) for i in range(0, len(x), 3)]
产生十六进制字符串列表:
['c00000', 'feb4f0', 'feb4b0', 'feb4ce', 'feb46c', 'feb68f', '786665',
'b536fe', 'b575fe', 'b4b1']
您要求的清单,
[0xC00000, 0xFEB4F0, ...]
是int
的列表,因为,例如,0xC00000只是以十六进制表示的int
:
In [7]: 0xC00000
Out[7]: 12582912
在Python2中,您可以使用int
获取int(hexstring, 16)
的列表:
>>> [int(binascii.hexlify(x[i:i+3]), 16) for i in range(0, len(x), 3)]
[12582912, 16692464, 16692400, 16692430, 16692332, 16692879, 7890533,
11876094, 11892222, 46257]
或者,在Python3中,
>>> [int.from_bytes(x[i:i+3], 'big', signed=False) for i in range(0, len(x), 3)]
[12582912, 16692464, 16692400, 16692430, 16692332, 16692879, 7890533,
11876094, 11892222, 46257]