我一直在做一个程序,我一直试图转换一个大的二进制文件(字符串)并将其打包成一个文件。我几天来一直在努力使这件事成为可能。这是我写的打包大二进制字符串的代码。
binaryRecieved="11001010101....(Shortened)"
f=open(fileName,'wb')
m=long(binaryRecieved,2)
struct.pack('i',m)
f.write(struct.pack('i',m))
f.close()
quit()
我只剩下这个错误了
^{pr2}$我的整数超出范围,所以我想知道是否有其他方法来处理这个问题。
谢谢
把你的位串转换成字节串:例如请看这个问题Converting bits to bytes in Python。然后用
struct.pack('c', bytestring)
压缩字节对于按高位顺序对m进行编码(例如在正常十进制中“10”被写成“10”),请使用:
对于按小尾数顺序编码
^{pr2}$m
(例如在正常十进制用法中“ten”被写成“01”),请使用:这两个函数都对数字起作用—就像您在问题中所做的那样—所以返回的bytearray可能比预期的要短(因为对于数字,前导零无关紧要)。在
要精确表示二进制数字字符串(只有当其长度可被8除时才有可能),您必须执行以下操作:
在
struct.pack
中,您使用了表示整数的“i”,它是有限的。正如您的代码所述,您的输出很长;因此,您可能希望使用“d”代替“i”,将数据打包成两倍。它应该有用。有关详细信息,请参见Python struct。在
相关问题 更多 >
编程相关推荐