当前位置: 首页 > news >正文

网站管理助手4.0域名备案查询管理系统

网站管理助手4.0,域名备案查询管理系统,怎么做ppt教程网站,微信网站开发这个专栏好久没有更新了,主要是坑开的有点大,也不知道怎么填,涉及到的开发语言比较多,写起来比较累,需要看的人其实并不多,只能说,慢慢填吧,中间肯定还会插很多别的东西,…

这个专栏好久没有更新了,主要是坑开的有点大,也不知道怎么填,涉及到的开发语言比较多,写起来比较累,需要看的人其实并不多,只能说,慢慢填吧,中间肯定还会插很多别的东西,更新频率自己也不知道。

上一次说了Java和C#调用C接口传递结构体,今天来说一下Python。由于鸿蒙并不需要在arkts层真正的定义结构体,Napi层可以通过Json转结构体的方式来实现,还没想好怎么去举例子,下次再说吧。

Python这种脚本语言并没有结构体的概念,所以我们要用到Python的ctypes包中的Structure。

和Java、C#一样,由于高级语言的结构与C的结构体并不完全一样,高级语言的类包含方法,而C的结构体是定义即所见,所以C接口直接调用高级语言的结构体数组地址时,会崩溃,Python也和C#、Java一样,定义为数组并赋值,再将数组转换为连续内存。

from ctypes import *
import sys# 定义结构体(需与C头文件完全一致)
class stGoodsInfo(Structure):_fields_ = [("goodsId", c_char_p),("goodsName", c_char_p),("quantity", c_char_p),("price", c_char_p),("goodsCategory", c_char_p),("body", c_char_p),("discount", c_char_p),("unit", c_char_p)]class stOrderInfo(Structure):_fields_ = [("merOrderId", c_char_p),("srcReserve", c_char_p),("orderDesc", c_char_p),("totalAmount", c_char_p),("goodsNum", c_int),("pstGoodsInfo", POINTER(stGoodsInfo)),("attachedData", c_char_p)]# 加载动态库(示例名称,需替换实际库路径)
lib = CDLL("XXX.so")  # Linux/Mac
# lib = WinDLL("XXX.dll")  # Windows# 定义函数原型
lib.PalmPay.argtypes = [POINTER(stOrderInfo)]
lib.PalmPay.restype = Nonedef main():# 创建商品数组(保持内存连续)goods_array = (stGoodsInfo * 2)()# 填充第一个商品goods_array[0] = stGoodsInfo(goodsId=b"SDGOOD000001",goodsName="哇哈哈矿泉水".encode('utf-8'),quantity=b"2",price=b"2.00",goodsCategory="食品饮料".encode('utf-8'),body="饮料".encode('utf-8'),discount=b"0",unit="瓶".encode('utf-8'))# 填充第二个商品goods_array[1] = stGoodsInfo(goodsId=b"SDGOOD000002",goodsName="百岁山矿泉水".encode('utf-8'),quantity=b"2",price=b"3.00",goodsCategory="食品饮料".encode('utf-8'),body="饮料".encode('utf-8'),discount=b"0",unit="瓶".encode('utf-8'))# 创建订单结构体order = stOrderInfo()order.merOrderId = b"SD000000000000001"order.srcReserve = b"aaaaaaaaaaaaaa"order.orderDesc = b"Test"order.totalAmount = b"10.00"order.attachedData = b"attachedData test"order.goodsNum = 2order.pstGoodsInfo = cast(goods_array, POINTER(stGoodsInfo))  # 关键指针转换# 调用C接口(传递结构体指针)lib.PalmPay(byref(order))if __name__ == "__main__":main()

http://www.dtcms.com/a/466661.html

相关文章:

  • Oracle EBS ERP之报表开发—条件筛选按钮和组件开发
  • 济南网站建设与优化注册城乡规划师考试时间2023
  • 南通网站建设公司做品牌推广用什么网站
  • linux模拟压测CPU彪高到100%
  • 【2025全新】CDToolX专业圆二色谱数据处理软件下载安装教程(含最新版安装包)
  • 做网站做小程序推广中搜seo
  • Qiankun 微前端框架 start() 方法详解
  • 网站开发服务器多少钱个体户45万以下免个税
  • Autoware Universe 定位模块详解 | 第二节 深入研究定位模块数据流
  • 网站底部横条导航代码免费软件app下载大全
  • Java程序员如何深入学习JVM底层原理?
  • 送上门卤菜网站要怎么做软文代写发布网络
  • 有关网站建设的app安徽省建设工程质量协会网站
  • 【Liunx】高级IO
  • 「日拱一码」104 MOFs + AI
  • 学习笔记:Vue Router 路由匹配语法详解
  • 美妆网站建设外贸网站建设广告
  • 嵌入式开发基础知识补充—内存的种类和C语言变量的存储位置(非易失性存储和易失性存储)
  • 沈阳妇科排名前十的医生seo关键词排名优化
  • 读写分离架构:数据访问层的演进与实践
  • 应用最广网站建设技术wordpress被百度收录
  • Shell 编程1
  • conv([1 1], [1 2]) % 输出 [1 3 2](对应 (x+1)(x+2) = x²+3x+2)
  • SpringBoot 集成 LangChain4j RAG
  • linear protocol(线性协议)
  • net网络网站建设wordpress修改语言包目录
  • 购物网站建设的意义与目的镇江市建设工程安全监督站网站
  • UiKit中使用DiffableDataSource进行数据差异化更新
  • Elegant Query
  • 中小企业网站建设信息小企业想做网站推广找哪家强