您正在试图存储32个字节长。为什么不把它们存储为二进制数字?这样你只需要存储每个数字32个字节而不是41个或其他。您可以添加各种准压缩方案,以利用诸如大多数数字少于32个字节的情况。
如果您的号码是一个字符串,将其转换为int
第一。 Python3 int
s为基本无限的精度,这样你就不会丢失任何信息:
>>> num = '113AB87C877AAE3790'
>>> num = int(num, 16)
>>> num
317825918024297625488
现在你可以将结果转换为字节数组,并将其写入一个文件打开二进制写作:
with open('output.bin', 'wb') as file:
file.write(num.to_bytes(32, byteorder='big'))
int
方法to_bytes
将您的号码转换为可放置在文件中的一串字节。您需要指定字符串长度和顺序。 'big'
可以更容易地读取文件的十六进制转储。
读取文件回来了,它使用int.from_bytes
以类似的方式进行解码:
with open('output.bin', 'rb') as file:
bytes = file.read(32)
num = int.from_bytes(bytes, byteorder='big')
记住,总是包含在文件模式b
,或者如果您尝试读取你可能会遇到意想不到的问题或写入代码为\n
的数据。
无论是读取和写入操作可以循环作为理所当然的事。
无关记:'\ n'只需要一个字节。在Windows上,行尾是'\ r \ n',它需要两个字节。 – wecsam
你有没有考虑将文件存储为二进制文件? –
相关备注:您可能想了解MIDI格式如何存储数字。基本上,有一个字节数组,但只使用每个字节的低七位。这些七位段被连接在一起形成大整数。除了最后一个字节以外的所有字节的最高位为0(或者也许是另一种方式......我不记得了)。全部0的所有连续字节从左侧省略。 – wecsam