我想将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中复制它?
答案 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]
>>>