buffer转int python_C/C++实战014:字符串转换及Python传参数组
今天在写北京精雕宏变量获取的时候遇到一个传值为数组的例子,在获取宏参数时需要我们提供获取值的个数和对应的#代码int数组(最多一次可传递64个),接口返回给我们的是一个double数组(最多一次可返回64个),在c++我们只需定义一个数组然后传给方法即可,但今天要做的是通过python来调用c++的动态连接库。
python如何传递int数组
ctypes是Python的一个外部库,提供和C语言兼容的数据类型,通过ctypes可以调用c++编写的DLL中的接口函数,所以这里我们用ctypes来定义与c类型对应的数组类型,我在python中写了一个测试方法来调用c++的接口函数。
def dome(): dll = ctypes.cdll.LoadLibrary('C:/Users/Java/Desktop/JD/Debug/JD.dll')#引用c++动态链接库 num=7 #定义数组长度 IntArray = ctypes.c_int * num #申明一个数组 ia = IntArray(501,502,503,504,505,506,507) #给数组赋值 res = dll.test(ia,num)#调用c++动态链接库接口 pyResult=ctypes.string_at(res) #转换c++返回值 print(pyResult)#输出结果dome()
C++接受传参
由于精雕接口需要连接精雕才能实现,所以这里我写了一个测试方法来验证是否能够成功获取到Python传过来的值,然后我们通过循环遍历再将接收到的值提取出来转成char*返回给Python。
为什么不直接返回double数组?因为在c/c++中没有数组这种基本数据类型,所以无法直接返回一个数组,因此这里我采取 的是将数组转成字符串格式输出。
CString转char*问题
GetBuffer字符转换
这里遇到个转类型的问题,那就是CString转char*,这里我先用的是GetBuffer,将CString转char*并在c中对转换后的值进行打印,输出结果无误,而当Python调用时输出的结果却是以十六进制数 dd 规定的字符: xdd xdd xdd xdd xdd xdd xdd ......
char* test(int VarNo[64],int len){try{CString val="";for(int i=0;i
buffer转int python_C/C++实战014:字符串转换及Python传参数组相关推荐
- C/C++实战014:字符串转换及Python传参数组
今天在写北京精雕宏变量获取的时候遇到一个传值为数组的例子,在获取宏参数时需要我们提供获取值的个数和对应的#代码int数组(最多一次可传递64个),接口返回给我们的是一个double数组(最多一次可返回 ...
- LeetCode实战:字符串转换整数 (atoi)
题目英文 Implement atoi which converts a string to an integer. The function first discards as many white ...
- Python字符串的修改以及传参
前两天去面试web developer,面试官提出一个问题,用JavaScript或者Python实现字符串反转,我选择了Python,然后写出了代码(错误的): 1 #!/usr/bin/env p ...
- html中函数传递多个值,JavaScript 实战开发经验!函数多参数传参技巧
HTML5学堂-码匠:掌握JavaScript代码的你,一定编写封装过函数,为了提升函数的控制性,必不可少的就是参数,必选可选的一大堆参数罗列出来,函数调用貌似变得麻烦起来~~~ Tips: 必选参数 ...
- LeetCode实战:字符串相乘
题目英文 Given two non-negative integers num1 and num2 represented as strings, return the product of num ...
- LeetCode实战:字符串相加
题目英文 Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and ...
- 字符串(一):char 数组
字符串使用方法整理 系列: 字符串(一):char 数组 字符串(二):string 1. 声明 如下是一个例子(=> 表示表达式等价): char a[20] = "abcd&quo ...
- linux 字符串转换函数 simple_strtoul 简介
Linux内核中提供的一些字符串转换函数: lib/vsprintf.c unsigned long long simple_strtoull(const char *cp, char **endp, ...
- linux 内核 字符串转换函数
Linux内核中提供的一些字符串转换函数: lib/vsprintf.c unsigned long long simple_strtoull(const char *cp, char **endp, ...
最新文章
- 程序员看过来!JS、Java、C 依然强势,Go、Kotlin、Python 潜力股,2020 开发者生态系统报告
- 非常强悍的 RabbitMQ 总结,写得真好
- ALV通过F4事件,实现自定义搜索帮助F4
- Python ——告白小程序,添加微信号(快来设置你的freestyle吧)
- 在RHEL5/CentOS5上配置使用Open×××
- 统计学硕士考计算机博士,统计学国家重点学科博士点硕士点最全博研堂考研究生.pdf...
- 未签名的应用程序请求对系统进行无限制访问_OWASP Top 10 2017 10项最严重的 Web 应用程序安全风险 (完结篇)...
- Linux开发终端霓虹灯效果
- PDF文件如何插入图片?简单的操作方法
- PostgreSQL数据库——Pigsty grafana dashboards
- 我也来谈谈《我不是药神》这部电影
- 小程序提示 网络异常 Network Anomalies
- 支持中文!秒建 wiki 知识库的开源项目,构建私人知识网络
- promise和async
- cpu使用率(cpu使用率很低最大频率很高)
- Android :约束布局ConstraintLayout 之 Chains 链式约束
- 实习 | 深圳市彼岸心智科技有限公司招募新成员啦
- 《赢在中国》精彩评语 2006年度
- Encoder-Decoder自动生成对联,要试试么?
- 二代身份证读取-微调版
热门文章
- wxpython界面切换_Python图形界面—wxPython库的布局管理及页面切换
- Cpp 对象模型探索 / 虚基类表作用
- 必看:Kubernetes 开发环境对比
- 计算机网络管理第三版试卷,《计算机网络管理技术》试卷.doc
- java webservice 作用_@WebService这个标签的作用是什么
- python数值运算答案_笨方法学Python 习题3:数字和数学计算
- 谷歌浏览器chrome的vuejs devtools 插件的安装
- Educational Codeforces Round 64(Unrated for Div.1+Div. 2)
- Web服务之四:httpd虚拟主机
- Hive的相关面试问题