gpt4 book ai didi

python - 如何在 Python 中将长整数写为二进制?

转载 作者:太空狗 更新时间:2023-10-29 20:38:21 24 4
gpt4 key购买 nike

在 Python 中,长整数具有无限的精度。我想将一个 16 字节(128 位)的整数写入文件。标准库中的 struct 最多只支持 8 字节整数。 array 也有同样的限制。有没有办法在不屏蔽和移动每个整数的情况下做到这一点?

这里需要澄清一下:我正在写入一个文件,该文件将从非 Python 程序中读取,因此 pickle 不可用。所有 128 位都被使用。

最佳答案

我认为对于无符号整数(并忽略字节序)是这样的

import binascii

def binify(x):
h = hex(x)[2:].rstrip('L')
return binascii.unhexlify('0'*(32-len(h))+h)

>>> for i in 0, 1, 2**128-1:
... print i, repr(binify(i))
...
0 '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
1 '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'
340282366920938463463374607431768211455 '\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'

可能在技术上满足具有非 Python 特定输出、不使用显式掩码以及(我假设)不使用任何非标准模块的要求。不过不是特别优雅。

关于python - 如何在 Python 中将长整数写为二进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4670350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com