我使用此代码包数据
data = struct.pack(" bb3sb4si",0x11,3,' abc',4,' kkkk',0x12345678
并将其发送到我的服务器。
但是我的服务器收到了这个
为什么我有冗余双0?
答案 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.