python struct中pack和unpack

来源:互联网 发布:蓝牙音乐耳机推荐知乎 编辑:程序博客网 时间:2024/05/16 17:53

struct.pack() and struct.unpack()

用于C语言数据与Python数据类型间转换。

 

CharacterByte orderSizeAlignment@nativenativenative=nativestandardnone<little-endian 小尾字节序standardnone>big-endianstandardnone!network (= big-endian)standardnone

 

FormatC TypePython typeStandard sizeNotesxpad byteno value  ccharstring of length 11 bsigned charinteger1(3)Bunsigned charinteger1(3)?_Boolbool1(1)hshortinteger2(3)Hunsigned shortinteger2(3)iintinteger4(3)Iunsigned intinteger4(3)llonginteger4(3)Lunsigned longinteger4(3)qlong longinteger8(2), (3)Qunsigned long longinteger8(2), (3)ffloatfloat4(4)ddoublefloat8(4)schar[]string  pchar[]string  Pvoid *integer (5), (3)

 

 

>>> from struct import *>>> pack('hhl', 1, 2, 3)    #本例是大尾字节序'\x00\x01\x00\x02\x00\x00\x00\x03'>>> unpack('hhl', '\x00\x01\x00\x02\x00\x00\x00\x03')(1, 2, 3)>>> calcsize('hhl')    #参数必须是类型fmt8
>>> pack('ci', '*', 0x12131415)   # 存数时自动对齐字节,传说中的字节对齐,如果加上等号则进行优化,也就是说不填充字节'*\x00\x00\x00\x12\x13\x14\x15'>>> pack('ic', 0x12131415, '*')'\x12\x13\x14\x15*'>>> calcsize('ci')   如calcsize('=ci')  结果是:58>>> calcsize('ic') 5
>>>pack('llh0l', 1, 2, 3)        #加0在后面填充两个字节的0,不是很清楚,留待以后操作验明。
'\x00\x00\x00\x01\x00\x00\x00\x02\x00\x03\x00\x00'
#抄袭一把,(:
  1. # 取前5个字符,跳过4个字符华,再取3个字符   
  2. format = '5s 4x 3s'  
  3. 2. 使用struck.unpack获取子字符串   
  4. import struct   
  5. print struct.unpack(format, 'Test astring')   
  6. #('Test', 'ing')   
  7. 来个简单的例子吧,有一个字符串'He is not very happy',处理一下,把中间的not去掉,然后再输出。   
  8. import struct   
  9. theString = 'He is not very happy'   
  10. format = '2s 1x 2s 5x 4s 1x 5s'   
  11. print ' '.join(struct.unpack(format, theString))   
  12. 输出结果:   
  13. He is very happy  

 

0 0
原创粉丝点击