struct.pack 不仅仅关系到大端和小端............还有C结构大小

3910阅读 0评论2013-06-03 lolizeppelin
分类:Python/Ruby


点击(此处)折叠或打开

  1. print struct.calcsize('@HIHIIH65sII')
  2. print struct.calcsize('!HIHIIH65sII')
  3. print struct.calcsize('>HIHIIH65sII')
  4. print struct.calcsize(')

上面的代码在我 i7 870(windows 7 64位)的机器上输出是
96
91
91
91

之前我以为我pack后不是大端就是小端,后来发包服务器一直不接受,找半天没发现我这有什么问题......
我指定大端发去的不对,我以为不指定大端就是小端,结果发过去还不对
今天才发现不指定大小端会有这种问题!!!!!所以以后无论大小端都要指定一次- - orz
不然pack以后c结构的大小会导致问题

Character Byte order Size and alignment
@ native native
= native standard
< little-endian standard
> big-endian standard
! network (= big-endian) standard

指定大端和小端后size那里才是standard(标准),不然的话可能会因为本地机器导致改变c结构的size
上一篇:VIM中insert模式不能使用bask space键
下一篇:原来硬件错误的话linux会自动关机的...