重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

包含python函数是结构体的词条

Python中如何使用C的结构体struct求解

閟truct就可以使用结构体了:

成都创新互联专业为企业提供观山湖网站建设、观山湖做网站、观山湖网站设计、观山湖网站制作等企业网站建设、网页设计与制作、观山湖企业网站模板建站服务,10余年观山湖做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

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异常。

python里面可以定义结构体吗

Python中没有专门定义结构体的方法,但可以使用class标记定义类来代替结构体,

其成员可以在构造函数__init__中定义,具体方法如下。

复制代码代码如下:

class item:

def __init__(self):

self.name = '' # 名称

self.size = 10 # 尺寸

self.list = [] # 列表

a = item() # 定义结构对象

a.name = 'cup'

a.size = 8

a.list.append('water')

求,Python的C扩展程序中传递参数为结构体,怎么传递

况如下:

打算从python发一个tcp数据包给远程服务器,数据的主体是一个c语言的

struct

(较大,size

为1402)。由于这个struct太复杂,故不打算在python

处对其重新定义,目前的想法是用python调用一个c语言的模块,在这个模块中定义这个struct,并设置好数据后,将其struct传回python中,再打包传送服务器。

但是不知道如何将这个struct

变量从c语言

传入python中。尝试用py_buildvalue函数,以py_buildvalue("p",interface_setup)

//interface_setup为结构体变量

传递,

但是几次都得到运行时错误:

systemerror:

bad

format

char

passed

to

pybuildvaule。


分享标题:包含python函数是结构体的词条
文章转载:http://cqcxhl.com/article/hjpgis.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP