>>> struct.pack( '=ii', 123, 456)
'{\x00\x00\x00\xc8\x01\x00\x00'
>>> struct.unpack('=ii','{\x00\x00\x00\xc8\x01\x00\x00')
(123, 456)
可以使用
>>> help(struct)
看到,struct不但可以指定endian,还可以指定alignment,进而实现linux里的__attribute__ ((packed))的功能[luther.gliethttp]
>>> struct.calcsize('cBi')//可以进行存储空间优化
8
>>> struct.calcsize('=cBi') //表示使用__attribute__ ((packed)存储
6
>>> struct.pack('cBi', 'a', 8, 10)
'a\x08\x00\x00\n\x00\x00\x00'
>>> struct.pack('=cBi', 'a', 8, 10)
'a\x08\n\x00\x00\x00'
>>> struct.pack('=cbi4s', 'a', 8, 10, 'bcde') //s字符串前面必须加上字符串长度,这里为4表示是4个字节的字符串
'a\x08\n\x00\x00\x00bcde'
>>> struct.unpack('=cbi4s', 'a\x08\n\x00\x00\x00bcde')
('a', 8, 10, 'bcde')
阅读(2400) | 评论(0) | 转发(0) |