189 8069 5689

python结构体函数 Python结构体

python中定义的结构体问题: 类似c语言中的如下这种形式 typedef struct { int x; int y; int h; }point;

class block():

成都创新互联是一家专注于成都网站制作、做网站、外贸营销网站建设与策划设计,鄱阳网站建设哪家好?成都创新互联做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:鄱阳等地区。鄱阳做网站价格咨询:028-86922220

def __init__(self):

self.x=0

self.y=0

self.z=0

point=[block() for i in range(100)]

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里面可以定义结构体吗

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的结构体struct求解

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

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如何传递给c++一个结构体指针?前提是swig封装的C++函数,请写出代

在封装的代码间传递指针你要确保他们运行在相同的地址空间里,还要保证指针指向的内存的生存期是安全的,否则这种思路就是错误的。实现方法举例如下:

1、定义了C

结构体和函数如下

typedef

struct

NameAge

{

char

name[20];

int

age;

}NameAge

,

*NameAgePointer;

void

test(NameAgePointer

p)

//

接收结构体指针

{

//

do

something

with

p...

}

2、python定义结构体如下

#python中结构体定义

class

PyStruct():

def

__init__(self,

name,

age):

self.name

=

name

self.age

=

age

fred

=

PyStruct("fred",

5)

3、假设把第1步里的test封装成example模块,python导入example(既然你都会swig了,这个过程就不啰嗦了)

import

example

example.test(pointer(fred))

以上是基本思路,因为搭建开发环境和过程比较繁杂,没有验证过,但是应该没有大问题


分享文章:python结构体函数 Python结构体
文章链接:http://jkwzsj.com/article/hjspgg.html

其他资讯