将decimal int转换为little endian字符串('\ x ##\x ## ...')

Mat*_*att 2 python

我想将一个整数值转换为十六进制值的字符串,用little endian.例如,5707435436569584000会成为'\x4a\xe2\x34\x4f\x4a\xe2\x34\x4f'.

我所有的googlefu都找到了我hex(..)给我'0x4f34e24a4f34e180'的不是我想要的东西.

我可以手动拆分该字符串并构建我想要的字符串,但我希望somone可以指出一个更好的选择.

Mar*_*ers 11

您需要使用该struct模块:

>>> import struct
>>> struct.pack('<Q', 5707435436569584000)
'\x80\xe14OJ\xe24O'
>>> struct.pack('<Q', 5707435436569584202)
'J\xe24OJ\xe24O'
Run Code Online (Sandbox Code Playgroud)

这里<表示little-endian,Q我们想要打包一个unsigned long long(8个字节).

注意,Python将使用ASCII字符可打印ASCII范围落入到表示所得到的字节串,因此任何字节14OJ,24OJ上述结果的部分组成:

>>> struct.pack('<Q', 5707435436569584202).encode('hex')
'4ae2344f4ae2344f'
>>> '\x4a\xe2\x34\x4f\x4a\xe2\x34\x4f'
'J\xe24OJ\xe24O'
Run Code Online (Sandbox Code Playgroud)