python struct.pack数据有冗余0

时间:2016-02-05 02:05:45

标签: python struct

我使用此代码包数据

  

data = struct.pack(" bb3sb4si",0x11,3,' abc',4,' kkkk',0x12345678

并将其发送到我的服务器。

但是我的服务器收到了这个

enter image description here

为什么我有冗余双0?

1 个答案:

答案 0 :(得分:3)

你使用native alignment是隐含的;额外字节强制最终整数在4字节边界上开始。禁用与=前缀的对齐会删除额外的填充。

$ cat pack.py
import struct
import sys
data = struct.pack("=bb3sb4si", 0x11, 3, 'abc', 4, 'kkkk', 0x12345678)
sys.stdout.write(data)

$ python pack.py | xxd
0000000: 1103 6162 6304 6b6b 6b6b 7856 3412       ..abc.kkkkxV4.