Python 2和3之间的类型差异
发布时间:2020-05-23 08:58:52 所属栏目:Python 来源:互联网
导读:我有一个工作的 python 2.7程序调用一个DLL.我试图将脚本移植到python 3.2. DLL调用似乎工作(即调用时没有错误),但返回的数据没有意义. 以防万一有用: – 调用有三个参数:两个int(输入)和一个指向ushort数组(输出)的指针. 我尝试使用python和numpy数组没有
|
我有一个工作的 python 2.7程序调用一个DLL.我试图将脚本移植到python 3.2. DLL调用似乎工作(即调用时没有错误),但返回的数据没有意义. 以防万一有用: 我尝试使用python和numpy数组没有成功. 有人可以列举Python 2.7和3.2之间的区别,尊重ctypes吗? 提前致谢 编辑 这是一些示例代码.该DLL是proparyary所以我没有代码.但我确实有C标题: void example (int width,int height,unsigned short* pointer) python代码是: width,height = 40,100 imagearray = np.zeros((width,height),dtype=np.dtype(np.ushort)) image = np.ascontiguousarray(imagearray) ptrimage = image.ctypes.data_as(ct.POINTER(ct.c_ushort)) DLL.example(width,height,ptrimage) 这在python 2.7中工作,但不在3.2中. 编辑2 如果ctypes的更改只是Cedric指出的那样,那么python 3.2将无法正常工作.所以再看看代码,我发现有一个准备函数调用之前的功能,我提到.签名是: void prepare(char *table) 在python中,我呼吁: table = str(aNumber) DLL.prepare(table) 是否可能的问题是由于Python字符串处理的变化? 解决方法在Python 2.7中,字符串默认为字节串.在Python 3.x中,默认情况下它们是unicode.尝试使用.encode(‘ascii’)将其字符串显示为字符串,然后再将其传递给DLL.prepare.编辑: #another way of saying table=str(aNumber).encode('ascii')
table = bytes(str(aNumber),'ascii')
DLL.prepare(table) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- python – 展平pandas数据透视表
- python – 将包含NaN值的整个Pandas数据帧从string转换为fl
- Django 根据数据模型models创建数据表的实例
- python – 运行eventlet池时Celery是否自动运行Monkey Patc
- Python多线程编程(八):使用Event实现线程间通信
- 您使用Mercurial协调Pivotal Tracker的工作流程是什么?
- python – Aiohttp,Asyncio:RuntimeError:事件循环已关闭
- Python:重构代码以删除全局变量
- Python 多线程,threading模块,创建子线程的两种方式示例
- python – 如何使用pyodbc连接到vertica
