真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python結(jié)構(gòu)體函數(shù) Python結(jié)構(gòu)體

python中定義的結(jié)構(gòu)體問題: 類似c語言中的如下這種形式 typedef struct { int x; int y; int h; }point;

class?block():

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)與策劃設(shè)計(jì),鄱陽網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:鄱陽等地區(qū)。鄱陽做網(wǎng)站價格咨詢:028-86922220

def?__init__(self):

self.x=0

self.y=0

self.z=0

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

Python向怎么向C語言傳遞結(jié)構(gòu)體

況如下:

打算從Python發(fā)一個TCP數(shù)據(jù)包給遠(yuǎn)程服務(wù)器,數(shù)據(jù)的主體是一個C語言的 struct (較大,size 為1402)。由于這個struct太復(fù)雜,故不打算在python 處對其重新定義,目前的想法是用python調(diào)用一個C語言的模塊,在這個模塊中定義這個Struct,并設(shè)置好數(shù)據(jù)后,將其struct傳回python中,再打包傳送服務(wù)器。

但是不知道如何將這個struct 變量從C語言 傳入Python中。嘗試用Py_BuildValue函數(shù),以Py_BuildValue("P",interface_setup) //interface_setup為結(jié)構(gòu)體變量

傳遞,

但是幾次都得到運(yùn)行時錯誤:

SystemError: bad format char passed to PyBuildVaule。

python里面可以定義結(jié)構(gòu)體嗎

Python中沒有專門定義結(jié)構(gòu)體的方法,但可以使用class標(biāo)記定義類來代替結(jié)構(gòu)體,

其成員可以在構(gòu)造函數(shù)__init__中定義,具體方法如下。

復(fù)制代碼代碼如下:

class item:

def __init__(self):

self.name = '' # 名稱

self.size = 10 # 尺寸

self.list = [] # 列表

a = item() # 定義結(jié)構(gòu)對象

a.name = 'cup'

a.size = 8

a.list.append('water')

Python中如何使用C的結(jié)構(gòu)體struct求解

閟truct就可以使用結(jié)構(gòu)體了:

import struct

生成一個結(jié)構(gòu)體實(shí)例:

data = struct.pack( 'format_string', struct_menber_1, struct_menber_2, ... )

其中的format_string用來指定結(jié)構(gòu)體的格式(指明該結(jié)構(gòu)體在C中的定義),由兩部分組成:

首先是一個可選的特殊字符,用來指明字節(jié)序、數(shù)據(jù)類型大小和對齊方式:

@: native order, size alignment (default)

=: native order, std. size alignment

: little-endian, std. size alignment

: big-endian, std. size alignment

!: same as

然后是指明結(jié)構(gòu)體定義的部分:

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模塊的函數(shù)出錯,將產(chǎn)生struct.error異常。

python如何傳遞給c++一個結(jié)構(gòu)體指針?前提是swig封裝的C++函數(shù),請寫出代

在封裝的代碼間傳遞指針你要確保他們運(yùn)行在相同的地址空間里,還要保證指針指向的內(nèi)存的生存期是安全的,否則這種思路就是錯誤的。實(shí)現(xiàn)方法舉例如下:

1、定義了C

結(jié)構(gòu)體和函數(shù)如下

typedef

struct

NameAge

{

char

name[20];

int

age;

}NameAge

,

*NameAgePointer;

void

test(NameAgePointer

p)

//

接收結(jié)構(gòu)體指針

{

//

do

something

with

p...

}

2、python定義結(jié)構(gòu)體如下

#python中結(jié)構(gòu)體定義

class

PyStruct():

def

__init__(self,

name,

age):

self.name

=

name

self.age

=

age

fred

=

PyStruct("fred",

5)

3、假設(shè)把第1步里的test封裝成example模塊,python導(dǎo)入example(既然你都會swig了,這個過程就不啰嗦了)

import

example

example.test(pointer(fred))

以上是基本思路,因?yàn)榇罱ㄩ_發(fā)環(huán)境和過程比較繁雜,沒有驗(yàn)證過,但是應(yīng)該沒有大問題


文章題目:python結(jié)構(gòu)體函數(shù) Python結(jié)構(gòu)體
轉(zhuǎn)載來于:http://weahome.cn/article/hjspgg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部