Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19088
  • 博文数量: 9
  • 博客积分: 1436
  • 博客等级: 上尉
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-27 10:07
文章分类

全部博文(9)

文章存档

2011年(1)

2009年(8)

我的朋友
最近访客

分类: Python/Ruby

2009-05-31 11:33:58

在Python中导入模块struct就可以使用结构体了:
import struct

生成一个结构体实例:
data = struct.pack( 'format_string', struct_menber_1, struct_menber_2, ... )
其中的format_string用来指定结构体的格式(指明该结构体在C中的定义),由两部分组成:
首先是一个可选的特殊字符,用来指明字节序、数据类型大小和对齐方式:
@: native order, size & alignment (default)
 
=: native order, std. size & alignment
 <: little-endian, std. size & alignment
 >: big-endian, std. size & alignment
 !: same as >
然后是指明结构体定义的部分:
The remaining chars indicate types of args and must match exactly;
these can be preceded by a decimal repeat count:
 x: pad byte (no data); c:char; b:signed byte; B:unsigned byte;
 h:short; H:unsigned short; i:int; I:unsigned int;
 l:long; L:unsigned long; f:float; d:double.
Special cases (preceding decimal count indicates length):
 s:string (array of char); p: pascal string (with count byte).
Special case (only available in native format):
 P:an integer type that is wide enough to hold a pointer.
Special case (not in native mode unless 'long long' in platform C):
 q:long long; Q:unsigned long long
Whitespace between formats is ignored.

如果struct模块的函数出错,将产生struct.error异常。

收到结构体的处理是类似的,只是使用unpack方法。
udata = struct.unpack( 'format_string', pack_data )
udata将是一个tuple。
阅读(1385) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~