您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python 2和3之间的类型差异

5b51 2022/1/14 8:22:23 python 字数 2421 阅读 531 来源 www.jb51.cc/python

我有一个工作的 python 2.7程序调用一个DLL.我试图将脚本移植到python 3.2. DLL调用似乎工作(即调用时没有错误),但返回的数据没有意义. 以防万一有用: – 调用有三个参数:两个int(输入)和一个指向ushort数组(输出)的指针. 我尝试使用python和numpy数组没有成功. 有人可以列举Python 2.7和3.2之间的区别,尊重ctypes吗? 提前致谢 编辑

概述

以防万一有用:
调用有三个参数:两个int(输入)和一个指向ushort数组(输出)的指针.

我尝试使用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字符串处理的变化?

编辑:

#another way of saying table=str(aNumber).encode('ascii')
table = bytes(str(aNumber),'ascii')
DLL.prepare(table)

总结

以上是编程之家为你收集整理的Python 2和3之间的类型差异全部内容,希望文章能够帮你解决Python 2和3之间的类型差异所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶