pythonc的结构体

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

2.c结构体怎么用python写

C封装了一个Dll,名为SpjMatlabTest.dll,暴露实现: typedef struct{ double *Min; double *Max; } ST_TESTLIMIT; typedef struct{ int NumVDIVs; int NumPts; double *TestedVDIVs; // Pointer to first element in array that is 1xNumVDIVs long. double *TestPtsinFracFS; // Pointer to first element in array that is 1xNumPts long. double *VerrinFracFS; // Pointer to first element in array that is NumVDIVs*NumPts*NumChans long. double DCAcc; double OffConstAcc; double *GainErrorPct; // Pointer to first element in array of NumVDIVs*NumChans long. double *OffsetErrorFracFS; // Pointer to first element in array of NumVDIVs*NumChans long. double *MaxNonLinearityFracFS; // Pointer to first element in array of NumVDIVs*NumChans long. double GainErrorLimitPctAbs; double TDIV; } ST_LINACCD1M; #include #ifndef BUILD_DLL //Define the function prototypes to be used by the calling application. typedef bool (__cdecl *MATLABAPPINITIALIZE)(void); typedef bool (__cdecl *MATLABAPPTERMINATE)(void); typedef bool (__cdecl *LINACCD1M)(ST_LINACCD1M *stOutput, const bool *Channels, const char *ScopeAddress, const int GPIBAddress); typedef void (__cdecl *LINACCD1MCLEANUP)(void); #endif 现在需要在py代码中使用ST_LINACCD1M结构体。

测试代码: from ctypes import * class C_ST_LINACCD1M(Structure): _fields_ = [('NumVDIVs', c_int), ('NumPts', c_int), ('TestedVDIVs', c_void_p), ('TestPtsinFracFS', c_void_p), ('VerrinFracFS', c_void_p), ('DCAcc', c_double), ('OffConstAcc', c_double), ('GainErrorPct', c_void_p), ('OffsetErrorFracFS', c_void_p), ('MaxNonLinearityFracFS', c_void_p), ('GainErrorLimitPctAbs', c_double), ('TDIV', c_double)] import sys def visit(): info = C_ST_LINACCD1M() #print info.sth。 dllName = "SpjMatlabTest.dll" dllload = windll.LoadLibrary(dllName) print dllload py_LINACCD1M = dllload.LINACCD1M py_LINACCD1M.argtypes = [c_void_p, c_void_p, c_char_p, c_int] #.restypep = c_void_p para_in_1 = True para_in_2 = c_char_p("/0") para_in_3 = 0 nRetVal = dllload.LINACCD1M(byref(info), para_in_1, para_in_2, para_in_3) #print info.sth。

if __name__ == "__main__": visit() 打完收工。

3.c结构体怎么用python写

C封装了一个Dll,名为SpjMatlabTest.dll,暴露实现: typedef struct{ double *Min; double *Max; } ST_TESTLIMIT; typedef struct{ int NumVDIVs; int NumPts; double *TestedVDIVs; // Pointer to first element in array that is 1xNumVDIVs long. double *TestPtsinFracFS; // Pointer to first element in array that is 1xNumPts long. double *VerrinFracFS; // Pointer to first element in array that is NumVDIVs*NumPts*NumChans long. double DCAcc; double OffConstAcc; double *GainErrorPct; // Pointer to first element in array of NumVDIVs*NumChans long. double *OffsetErrorFracFS; // Pointer to first element in array of NumVDIVs*NumChans long. double *MaxNonLinearityFracFS; // Pointer to first element in array of NumVDIVs*NumChans long. double GainErrorLimitPctAbs; double TDIV; } ST_LINACCD1M; #include #ifndef BUILD_DLL //Define the function prototypes to be used by the calling application. typedef bool (__cdecl *MATLABAPPINITIALIZE)(void); typedef bool (__cdecl *MATLABAPPTERMINATE)(void); typedef bool (__cdecl *LINACCD1M)(ST_LINACCD1M *stOutput, const bool *Channels, const char *ScopeAddress, const int GPIBAddress); typedef void (__cdecl *LINACCD1MCLEANUP)(void); #endif 现在需要在py代码中使用ST_LINACCD1M结构体。

测试代码: from ctypes import * class C_ST_LINACCD1M(Structure): _fields_ = [('NumVDIVs', c_int), ('NumPts', c_int), ('TestedVDIVs', c_void_p), ('TestPtsinFracFS', c_void_p), ('VerrinFracFS', c_void_p), ('DCAcc', c_double), ('OffConstAcc', c_double), ('GainErrorPct', c_void_p), ('OffsetErrorFracFS', c_void_p), ('MaxNonLinearityFracFS', c_void_p), ('GainErrorLimitPctAbs', c_double), ('TDIV', c_double)] import sys def visit(): info = C_ST_LINACCD1M() #print info.sth。 dllName = "SpjMatlabTest.dll" dllload = windll.LoadLibrary(dllName) print dllload py_LINACCD1M = dllload.LINACCD1M py_LINACCD1M.argtypes = [c_void_p, c_void_p, c_char_p, c_int] #.restypep = c_void_p para_in_1 = True para_in_2 = c_char_p("/0") para_in_3 = 0 nRetVal = dllload.LINACCD1M(byref(info), para_in_1, para_in_2, para_in_3) #print info.sth。

if __name__ == "__main__": visit() 打完收工。

4.如何在Python中使用C/C++结构体等复杂类型

C封装了一个Dll,名为SpjMatlabTest.dll,暴露实现:typedef struct{double *Min;double *Max;} ST_TESTLIMIT;typedef struct{int NumVDIVs;int NumPts;double *TestedVDIVs; // Pointer to first element in array that is 1xNumVDIVs long.double *TestPtsinFracFS; // Pointer to first element in array that is 1xNumPts long.double *VerrinFracFS; // Pointer to first element in array that is NumVDIVs*NumPts*NumChans long.double DCAcc;double OffConstAcc;double *GainErrorPct; // Pointer to first element in array of NumVDIVs*NumChans long.double *OffsetErrorFracFS; // Pointer to first element in array of NumVDIVs*NumChans long.double *MaxNonLinearityFracFS; // Pointer to first element in array of NumVDIVs*NumChans long.double GainErrorLimitPctAbs;double TDIV;} ST_LINACCD1M;#include #ifndef BUILD_DLL//Define the function prototypes to be used by the calling application.typedef bool (__cdecl *MATLABAPPINITIALIZE)(void);typedef bool (__cdecl *MATLABAPPTERMINATE)(void);typedef bool (__cdecl *LINACCD1M)(ST_LINACCD1M *stOutput, const bool *Channels, const char *ScopeAddress, const int GPIBAddress);typedef void (__cdecl *LINACCD1MCLEANUP)(void);#endif现在需要在py代码中使用ST_LINACCD1M结构体。

测试代码:from ctypes import *class C_ST_LINACCD1M(Structure):_fields_ = [('NumVDIVs', c_int),('NumPts', c_int), ('TestedVDIVs', c_void_p),('TestPtsinFracFS', c_void_p),('VerrinFracFS', c_void_p),('DCAcc', c_double),('OffConstAcc', c_double),('GainErrorPct', c_void_p),('OffsetErrorFracFS', c_void_p),('MaxNonLinearityFracFS', c_void_p),('GainErrorLimitPctAbs', c_double),('TDIV', c_double)]import sysdef visit(): info = C_ST_LINACCD1M() #print info.sth。dllName = "SpjMatlabTest.dll" dllload = windll.LoadLibrary(dllName)print dllloadpy_LINACCD1M = dllload.LINACCD1Mpy_LINACCD1M.argtypes = [c_void_p, c_void_p, c_char_p, c_int]#.restypep = c_void_ppara_in_1 = Truepara_in_2 = c_char_p("/0")para_in_3 = 0 nRetVal = dllload.LINACCD1M(byref(info), para_in_1, para_in_2, para_in_3) #print info.sth。

if __name__ == "__main__":visit()打完收工。

5.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。

6.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。

pythonc的结构体

转载请注明出处编程代码网 » pythonc的结构体

资讯

abaquspython二次开发

阅读(7)

本文主要为您介绍abaquspython二次开发,内容包括求ABAQUS会用python做二次开发的高手,N多问题咨询,关于ABAQUS二次开发使用的Python版本问题,ABAQUS二次开发是用fortran还是python二次开发和UMAT用户子程。首先,我要声明,我python菜鸟一只,其

资讯

python开发实战pdf

阅读(6)

本文主要为您介绍python开发实战pdf,内容包括Python编程的19个资源,python教程哪里下载,在线等,《python大战机器学习》pdf。数据科学家是当下炙手可热的职业,机器学习则是他们的必备技能。机器学习在大数据分析中居于核心地位,在互联网、金

资讯

python给二维数组赋值

阅读(5)

本文主要为您介绍python给二维数组赋值,内容包括python二维数组的赋值,Python怎么初始化一个多维数组,如何在python3中输入二维数组。python中创建二维列表/数组,即创建一个list,并且这个list的元素还是list。可以用列表解析的方法实现。创建

资讯

pythonscrapy教程

阅读(6)

本文主要为您介绍pythonscrapy教程,内容包括怎么样使用Python的Scrapy爬虫框架,搞不懂怎么安装python的scrapy,怎么样使用Python的Scrapy爬虫框架。创造一个项目在你要抓取之前,首先要建立一个新的Scrapy项目。然后进去你的存放代码目录,执行

资讯

pythonattribute

阅读(6)

本文主要为您介绍pythonattribute,内容包括pythonAttributeError:&#39;Stack&#39;objecthasnoattribute&#39;stack&#39;,python里的attributeerror怎么解决呢,python中怎样一个类里面的attribute可以有其它类的对象。\n默认为换行,\t默认

资讯

windows7python

阅读(6)

本文主要为您介绍windows7python,内容包括如何在win7下安装Python及配置,如何在win7下安装Python及配置,windows7怎么运行python。安装配置如下:下载安装 Python如下载 Python 2.6,安装目录为 C:\Python26添加环境变量path =C:\Pyt

资讯

pythonrhino

阅读(6)

本文主要为您介绍pythonrhino,内容包括如何为rhinopython添加模块,如何在mac里添加rhinopython,请问谁有grasshopper里的pythonforrhino和starling?。首先下载MAC版的64位Eclipse,然后解压缩。 2、下载Python。MAC自带的是的python版本比较

资讯

python2.7爬虫

阅读(5)

本文主要为您介绍python2.7爬虫,内容包括[Python2.7][爬虫][BeautifulSoup],如图,使用soup.find()查找到目,Python2.7爬虫问题,mysql错误\xA0,怎么除掉amp;nbsp,python为什么叫爬虫。因为python的脚本特性,易于配置,对字符的处理也非常灵活,就

资讯

python爬虫包

阅读(6)

本文主要为您介绍python爬虫包,内容包括Python爬虫导的哪个包,我想要学习爬虫,以下是我已经安装好的python包,我还需要下载些什,Python爬虫导的哪个包。可以看这个教程:网页链接此教程 通过三个爬虫案例来使学员认识Scrapy框架、了解Scrapy

资讯

phppython学哪个

阅读(5)

本文主要为您介绍phppython学哪个,内容包括php和python哪个学哪个比较好,php和python哪个容易学,php与python语言学哪一个比较好。单说做网页的复话php肯定要比python更适合些因为这是php的主要目的如果说只是要入门编程的话,python相对要简

资讯

axispython

阅读(7)

本文主要为您介绍axispython,内容包括pythonaxis=0是代表的行还是列,pythonaxis=0是代表的行还是列,如何解决python3下axis=。import jsonimport pandas as pddb = json.loads(open(pruItems.json, r)

资讯

python虚拟主机

阅读(7)

本文主要为您介绍python虚拟主机,内容包括哪些支持python的虚拟主机值得推荐,python虚拟机是什么意思,请问哪有支持modpython的虚拟主机。九州我以前买过一个月,但存在的安全问题不得不考虑.九州的确可以支持python,php,perl,客服也还行,但安

资讯

wifi破解python

阅读(7)

本文主要为您介绍wifi破解python,内容包括python怎么破解无线网密码,如何用python轻松破解wifi密码,如何用python轻松破解wif梦幻西游无双开服公告i密码。环境准备python2.7凑合的linux差不多的无线网卡pywifi模块弱口令字典清除系统中的任

资讯

pythonplt

阅读(7)

本文主要为您介绍pythonplt,内容包括pythonplt怎么画数据点和标签图,pythonplt怎么画数据点和标签图,pythonplt.imshow怎么用。用法以既步骤:给出一张图片。

资讯

pythoncocos2dx

阅读(7)

本文主要为您介绍pythoncocos2dx,内容包括怎样用python写cocos2dx,怎样用python写cocos2dx,cocos2dx为什么不支持python。1. 准备工作(1)VS2012(2)cocos2dx cn.cocos2d-x.org/download(3)python 新版本的c

资讯

pythoncaffewindows

阅读(5)

本文主要为您介绍pythoncaffewindows,内容包括如何在Windows下安装配置python接口的caffe,如何在Windows下安装配置python接口的caffe,Windows+Anaconda+caffepython要怎么配置。整了一晚上加一上午。网上关于python的记录较少,这里写一下。

资讯

swigpythonc

阅读(5)

本文主要为您介绍swigpythonc,内容包括怎么用swig实现在python中继承C++接口类,怎么用swig实现在python中继承C++接口类,如何通过Boost.Python在Python中使用C++类和函数。你找个工具将这个接口API,自动转换成python版本的就可以了。好象是S

资讯

pythoncsv乱码

阅读(5)

本文主要为您介绍pythoncsv乱码,内容包括python读取csv文件中文字符乱码,python读取csv文件中文字符乱码,csv文件打开乱码,方法可以解决。python专门的csv API:https://docs.python.org/2/library/csv.html2、一是可以尝试上

资讯

pythoncfd

阅读(7)

本文主要为您介绍pythoncfd,内容包括pythondef是什么意思,PythonIDLE与python有什么区别,StacklessPython到底是什么东东和Python什么关系。指代不同Python IDLE:是Python的集成开发环境 ,自1.5.2b1以来已与该语言的默认实现捆绑在一起。 2、

资讯

pythonclass的参数

阅读(6)

本文主要为您介绍pythonclass的参数,内容包括关于python的类的参数,python中class.函数()和class.函数的区别是什么,python的class自定义方法能否同名通过参数区别。类实例化时,会调用类的__init__(self)方法,__init__方法定义了几个参数,就传几

资讯

pythoncboost

阅读(6)

本文主要为您介绍pythoncboost,内容包括如何通过Boost.Python在Python中使用C++类和函数,如何通过Boost.Python在Python中使用C++类和函数,如何在Python上安装xgboost。(1)从Boost官方网站下载Boost库源文件,将其解压至某一目录中。(2)将Boo

资讯

pythonc比较

阅读(9)

本文主要为您介绍pythonc比较,内容包括Python和C哪个更好学,python与C的区别,python与C的区别。C语言:C语言是大学生接触的第一门编程语言,它的重要性也是不言而喻的。2、C语言是一个面向过程的编程语言,而Python是一门面向对象的

资讯

python读取汉字

阅读(2)

本文主要为您介绍python读取汉字,内容包括python读取的中文怎么使用,python怎么读取文本中的汉字,python怎么读取文本中的汉字。在python脚本的第一行加上#encoding=utf-8即可。程序如下:Created on 2011-9-24@author: l

资讯

python数组行列

阅读(2)

本文主要为您介绍python数组行列,内容包括python3如何把由坐标构成的一维数组转换成行列分别为xy值的二维数组,python中怎样让数据列转置,python怎么输入一个数组矩阵。需求:你需要转置一个二维数组,将行列互换.讨论:你需要确保该数组的行列数

资讯

跳板机python

阅读(2)

本文主要为您介绍跳板机python,内容包括如何直接通过跳板机ssh到服务器,如何无视跳板机,如何直接通过跳板机ssh到服务器。公司连上远程游戏服需要先ssh登到跳板机,再在跳板机上ssh到远程,不能直连,如:自己的系统(Mac OS) ===&gt; 跳板机 =

资讯

python公开课

阅读(2)

本文主要为您介绍python公开课,内容包括Python教学视频实用型的哪里有,哪的Python视频教程比较好,有什么比较好的Python学习教程。随着人工智能时代呼声渐起,Python凭借其入门简单、应用广泛的优势成为很多想要入行互联网行业的人们的首选编

资讯

python二进制文件读取

阅读(2)

本文主要为您介绍python二进制文件读取,内容包括在python中如何从二进制文件中读取信息,在python中如何从二进制文件中读取信息,python二进制文件的读取与写入可以分别使用和方法。你是指读入二进制文件吧?可以使用numpy.fromfile(),也可以使

资讯

python黑客pdf

阅读(2)

本文主要为您介绍python黑客pdf,内容包括为什么很多关于python的黑客书,我想成为一名黑客,我在学python,可是里面讲的多是游戏设计,能否,求黑客书籍资源。学习是循序渐进的过程最常见的有两本python和黑客相关的书《python灰帽子:黑客与逆向

资讯

pythonexcel中文

阅读(2)

本文主要为您介绍pythonexcel中文,内容包括python怎么读excel中文,python怎么将中文写入excel文档,python怎么输出中文文件名excel。简单的介绍一下这两个库,先说xlrd,这个库读excel比较方便,各种方法使用起来也挺方便:bk = xlrd.open_workboo

资讯

apachepythonlinux

阅读(2)

本文主要为您介绍apachepythonlinux,内容包括请教一个关于linux下APACHE关于PYTHON的设置问题,linux配置apache和python的环境,modpython在安装的报错处理,在线,如何在Apache下设置Python。二、linux下apache配置python 一.安装apache apac

资讯

chainPython

阅读(2)

本文主要为您介绍chainPython,内容包括ord在python是什么意思怎么使用,Python大神解释一下吧,python中round函数怎么用。>>>help(ord)Help on built-in function ord in module builtins:ord() #

资讯

python添加一行

阅读(2)

本文主要为您介绍python添加一行,内容包括python怎么实现数组增加一行或多行,python如何将字符串增加一行,python怎么实现数组增加一行或多行。把文档全部作为一个字符串,字符串可以相加, 如在1.doc里添加s 和d,用>>>file=open(1.doc,r)>>>str