[英]Writing integers in binary to file in python
如何在Python 3中将整数写入二进制文件?
例如,我想将6277101735386680763835789423176059013767194773182842284081写入二进制文件,正好是24个字节(无符号,我只使用正整数)。 我怎样才能做到这一点? 我尝试了以下方法:
struct.pack("i", 6277101735386680763835789423176059013767194773182842284081)
这导致了
ValueError: cannot fit 'int' into an index-sized integer
我已尝试使用其他一些格式(“l”,“Q”),但这些也会导致错误:
struct.error: argument out of range
如果我可以将整数转换为正好24个字节,我将能够写入该文件,因为我知道如何做到这一点。 但是,我似乎无法将整数转换为字节。
另外,如何确保每个整数写入24个字节? 我还将编写较小的数字(1000,2000,1598754,12),但这些也应该占用24个字节。
然后如何从文件中再次读取整数?
使用Python 3,您可以执行以下操作:
i = 6277101735386680763835789423176059013767194773182842284081
with open('out.bin', 'wb') as file:
file.write((i).to_bytes(24, byteorder='big', signed=False))
with open('out.bin', 'rb') as file:
j = int.from_bytes(file.read(), byteorder='big')
print(j)
输出:
$ python3 tiny.py
6277101735386680763835789423176059013767194773182842284081
您可以使用提取最低有效字节
x = value & 0xFF
你可以从数字中删除该字节
value = value >> 8
重复此过程24次将为您提供字节。
您还可以通过获取更多字节来加速此过程,例如使用
x = value & 0xFFFFFFFF
value = value >> 32
你一次处理4个字节。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.