在 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 特定输出、不使用显式掩码以及(我假设)不使用任何非标准模块的要求。不过,并不是特别优雅。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)