本文由我司收集整编,推荐下载,如有疑问,请与我司联系
Python
使用
struct
处理二进制
(pack
和
unpack
用法
)
2016/09/03
0
[
转
]Python
使用
struct
处理二进制
(pack
和
unpack
用法
)Leave
a
reply
转载自:
cnblogs/gala/archive/2011/09/22/2184801.html
这篇文章写的很好,因此无耻的转了。
。
有的时候需要用
Python
处理二进制数据,比如,存取文件,
socket
操作时
.
这时
候,可以使用
python
的
struct
模块来完成
.
可以用
struct
来处理
c
语言中的结构体
.
struct
模块中最重要的三个函数是
pack(), unpack(), calcsize()
?#
四号程序员
coder412345678#
按照给定的
式
(fmt)
,把数据封装成字符串
(
实
际上是类
于
c
结构体的字节流
)pack(fmt, v1, v2, ...) #
按照给定的
式
(fmt)
解析字节
流
string
,返回解析出来的
tupleunpack(fmt, string) #
计算给定的
式
(fmt)
占用多少字
节的内存
calcsize(fmt)
上述
fmt
中,支持的
式为:
FORMATC
TYPEPYTHON
TYPESTANDARD
SIZENOTESxpad
byteno
valueccharstring
of
length
11bsigned
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[]stringpchar[]stringPvoid *integer(5), (3)
注
1.q
和
Q
只在机器支持
64
位操作时有意思
注
2.
每个
式前可以有一个数字,表示个数
注
3.s
式表示一定长度的字符串,
4s
表示长度为
4
的字符串,但是
p
表示的是
pascal
字符串
注
4.P
用来转换一个指针,其长度和机器字长相关
注
5.
最后一个可以用来表示指针类型的,占
4
个字节
为了同
c
中的结构体交换数据,还要考虑有的
c
或
c
编译器使用了字节对齐,通
常是以
4
个字节为单位的
32
位系统,故而
struct
根据本地机器字节顺序转换
.
可以用
式中的第一个字符来改变对齐方式
.
定义如下: