Jim*_*ker 8 python struct biginteger
在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'
Run Code Online (Sandbox Code Playgroud)
可能在技术上满足具有非Python特定输出的要求,而不是使用显式掩码,并且(我假设)不使用任何非标准模块.但不是特别优雅.