官网介绍
以Python的字符串作为表示C结构,处理存储在文件中或来自网络连接的二进制数据
如果第一个字符中未指定,则默认的为@,即小端
另:字节序是否用大写还是小写,与具体的使用的系统有关,可以通过sys.byteorder 查看系统的字节序的大端及小端的情况
通常情况:使用!表示大端开始的
返回struct对象
s = struct.Struct('I3sf')#格式化,I:int类型,3s:3个字符,f:float
print s
print s.format
返回struct对象
<Struct object at 0x0000000003DFDD88>
'I3sf'
原型:def pack(fmt, *args):
每个字节的数据转换成对应个数的十六进制表示
from struct import *
a = pack("hhl", 1, 2, 3)
print repr(a)
结果:
'\x01\x00\x02\x00\x03\x00\x00\x00'
b = pack("2hl", 1, 2, 3)
print repr(b)
结果:
\x01\x00\x02\x00\x03\x00\x00\x00
b = pack("llh0l", 1, 2, 3)
print repr(b)
结果
\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00
def unpack(fmt, string):
解包出来的是元组
b = pack("2hl", 1, 2, 3)
a = unpack("llh",b)
print type(a)
print a
结果为:
<type 'tuple'>
(1, 2, 3)
def calcsize(fmt):
calcsize("hhl")
结果为8
<type 'tuplpythone'>
(1, 2, 3)