目前,我有一个将整数列表转换为二进制表示的系统。我计算每个数字需要的字节数,然后使用to_bytes()
函数将它们转换为字节,如下所示:
o = open(outFileName, "wb")
for n in result:
numBytes = math.ceil(n.bit_length()/8)
o.write(n.to_bytes(numBytes, 'little'))
o.close()
然而,由于字节的长度各不相同,如何让拆包程序/函数知道每个字节的长度?我听说过struct模块,特别是pack函数的使用,但考虑到效率和尽可能减少文件大小,让这样一个解包程序检索原始编码整数的确切列表的最佳方法是什么?
你不能。您的编码将不同的整数列表映射到相同的字节序列。这样就不可能知道哪一个是原始输入。
您需要不同的编码。
看看每个字节的高位使用情况。根据整数的分布情况,还有其他更好的方法,比如Golomb编码。