有人知道打包后'c'(字符)在第一种情况下使用1字节,第二种情况是2字节,第三种情况是8字节?
>>> from struct import pack
>>> pack('c','A');
'A'
>>> pack('ch','A',1);
'A\x00\x01\x00'
>>> pack('cQ','A',1);
'A\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00'
如何强制字符总是占用1个字节?
答案 0 :(得分:0)
由于字节对齐而出现问题。如果打包没有对齐使用' ='签名:
pack('=cQ','A',1);
https://docs.python.org/2/library/struct.html#format-strings参考7.3.2.1