python中import struct_python的struct模块

python的struct模块

struct.pack

Struct.pack用于将python的值根据格式符,转换为字符串(因为python中没有字节类型,可以把这里的字符串理解为字节流,或者字节数组)其函数原型为:struct.pack(fmt, v1, v2, ...),参数fmt是格式字符串,关于格式字符串的相关信息在下面有所介绍。v1, v2, ...表示要转换的python值。下面的例子将两个整数转换为字符串(字节流):

>>> import struct

>>> a=20

>>> b=400

>>> str=struct.pack("ii",a,b)#转换后的str虽然是字符串类型,但相当于其他语言的字节流,可以在网络上传输

>>> print 'length:',len(str)

length: 8

>>> print str

� //这里是乱码

>>> print repr(str)

'\x14\x00\x00\x00\x90\x01\x00\x00'

格式符"i"表示转换为int,'ii'表示有两个int变量。进行转换后的结果长度为8个字节(int类型占用4个字节,两个int为8个字节),可以 看到输出的结果是乱码,因为结果是二进制数据,所以显示为乱码。可以使用python的内置函数repr来获取可识别的字符串,其中十六进制的 0x00000014, 0x00000190分别表示20和400。

struct.unpack

Struct.unpack与struct,pack相反,用于将字节流转换成python数值类型,

。它的函数原型为:struct.unpack(fmt, string),该函数返回一个元组。 下面是一个简单的例子:

>>> str=struct.pack('ii',20,400)

>>> a1,a2=struct.unpack('ii',str)

>>> print a1,a2

20 400

struct.calcsize

Struct.calcsize用于计算格式字符串所对应的结果的长度,如struct.calcsize('ii'),返回8。因为两个int类型所占用的长度是8个字节。

1)设置format格式

取前5个字符,跳过4个字符华,再取3个字符

format = '5s 4x 3s'

2)使用struct.unpack获取子字符串

>>> import struct

>>> format='5s 4x 3s'

>>> print struct.unpack(format,'Test astring')

('Test ', 'ing')

来个简单的例子吧,有一个字符串'He is not very happy',处理一下,把中间的not去掉,然后再输出

>>> import struct

>>> thestring

'he is not very happy'

>>> format='5s 4x 6s 5s'

>>> print ''.join(struct.unpack(format,thestring))

he is very happy

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值