2016-11-30 53 views
1

我有以下奇怪的问题,而试图读取和蟒蛇解开INT32 +的Int64 2.7.9拆包INT +长长的蟒蛇

file = open('my_file.bin','rb') 
s = file.read(4 + 8) 
struct.unpack('IQ',s) 

我得到以下错误: 解压需要的字符串参数长度16

这是为什么? I = 4 Q = 8 IQ = 12

顺便说一句以下工作:

s = file.read(4) 
struct.unpack('I',s) 
s = file.read(8) 
struct.unpack('Q',s) 
+0

我想这两个解压然后完成8 * 8 = int64,可以吗? –

回答

2

没有用它自己,但根据文档,解包()使用结构的原生填料,如将一个C编译器:显然,你正在64位机器上运行。如果您知道要打包的结构并按照本机字节排序,请使用等号IQ前缀格式字符串=IQ

背景:CPU的可以获取比打包数据更有效地在字边界上对齐的数据,这需要两个读取周期(并且与CPU的速度DRAM存取速度慢)。现在,64位是常见(8分字节的话),这有助于解释为什么我们需要更多的内存,这些天...

+0

确实='智商'的作品。谢谢 – Barak

0

它对准相关的问题。您可以检查docs