在尝试读取和解压缩python 2.7.9中的int32 + int64时,我必须遵循一些奇怪的问题
file = open('my_file.bin','rb')
s = file.read(4 + 8)
struct.unpack('IQ',s)
我收到以下错误: unpack需要一个长度为16的字符串参数
为什么? I = 4 Q = 8 IQ = 12
btw以下作品:
s = file.read(4)
struct.unpack('I',s)
s = file.read(8)
struct.unpack('Q',s)
答案 0 :(得分:2)
Haven自己使用它,但根据文档,unpack()使用结构的本机填充,就像你机器上的C编译器一样:显然,你是在64位机器上运行。如果您知道要打包的结构并遵循本机字节排序,请使用等号IQ
作为格式字符串=IQ
的前缀。
背景:CPU可以比打包数据更有效地获取在字边界上对齐的数据,这需要两个取指周期(并且DRAM访问与CPU速度相比较慢)。现在64位是常见的(8字节字),这有助于解释为什么我们现在需要更多的内存......
答案 1 :(得分:0)
这是与对齐相关的问题。您可以查看docs。