在Python中将uint64转换为字节数组

时间:2018-07-10 01:40:43

标签: python binary integer byte

我想将64位整数转换为长度为16的字节数组。

例如,我要将687198803487转换为[31 150 61 0 160 0 0 0 0 0 0 0 0 0 0 0]

在Go中,我可以使用

id := make([]byte, 16)
binary.LittleEndian.PutUint64(id, uint64(687198803487))

如何在Python 2中复制它?

1 个答案:

答案 0 :(得分:0)

struct.pack'<Q'一起使用。这里的<表示Little-Endian,而Q表示我们要打包一个无符号的long long(8个字节)。但是,如果要将其转换为16个字节,则必须自己填充零(毕竟,您的输入仅为64位)。

>>> import struct
>>> struct.pack('<Q', 687198803487)
b'\x1f\x96=\x00\xa0\x00\x00\x00'
>>> list(map(int, struct.pack('<Q', 687198803487)))
[31, 150, 61, 0, 160, 0, 0, 0]
>>>