【问题标题】:Convert uint64 to byte array in python [duplicate]在python中将uint64转换为字节数组[重复]
【发布时间】:2018-12-17 18:19:38
【问题描述】:

我想将一个 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 中复制它?

【问题讨论】:

  • 看看struct 模块。格式d 处理类型double
  • struct.unpack('8B', struct.pack('>Q', x))[::-1]

标签: python binary integer byte


【解决方案1】:

使用struct.pack'<Q' 来执行此操作。这里< 表示 little-Endian,Q 表示我们要打包一个 unsigned 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]
>>>

【讨论】:

  • 请将这些问题标记为重复问题,而不是回答它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-22
  • 2018-04-25
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
相关资源
最近更新 更多