小编The*_*ego的帖子

Python:转换字符串以用于ctypes.c_void_p()

给一个字符串:

msg="hello world"
Run Code Online (Sandbox Code Playgroud)

如何将其定义为ctypes.c_void_p()数据类型?

以下代码产生"无法转换为指针"异常:

data=ctypes.c_void_p(msg)
Run Code Online (Sandbox Code Playgroud)

data需要是void*C中的类型,因为它被传递给DLL.

我假设有一种方法可以使用包打包/解压缩字符串struct,但不幸的是我对这个过程非常不熟悉.

python dll ctypes types

7
推荐指数
1
解决办法
5854
查看次数

Python:将ip地址打包为ctype.c_ulong()以与DLL一起使用

给出以下代码:

import ctypes    
ip="192.168.1.1"
thisdll = ctypes.cdll['aDLL']
thisdll.functionThatExpectsAnIP(ip)
Run Code Online (Sandbox Code Playgroud)

我怎样才能正确地将其打包为期望它作为c_ulong数据类型的DLL?

我尝试过使用:

ip_netFrmt = socket.inet_aton(ip)
ip_netFrmt_c = ctypes.c_ulong(ip_netFrmt)
Run Code Online (Sandbox Code Playgroud)

但是,该c_ulong()方法返回错误,因为它需要一个整数.

有没有办法struct.pack用来实现这个目标?

python dll ctypes ip-address

3
推荐指数
1
解决办法
1995
查看次数

用于静态决赛列表的界面或类?

我正在维护一些利用接口的Java代码(让我们称之为BunchOfConstants)来简单地存储大量的公共静态最终字符串.有时,这些字符串名称会更改或添加/删除字符串名称.(这对维护来说有点令人头疼)

这个接口的唯一当前用途是在稍后的一个丑陋的if/then结构中比较输入,如下所示:

if(BunchOfConstants.CONSTANT1.equals(whatImLookingFor)){
    doSomeStuff(whatImLookingFor)
}else if(BunchOfConstants.CONSTANT2.equals(whatImLookingFor)){
    doSomeStuff(whatImLookingFor)
}else if(BunchOfConstants.CONSTANT3.equals(whatImLookingFor)){
    doSomeStuff(whatImLookingFor)
}
...
Run Code Online (Sandbox Code Playgroud)

我认为创建一个实现Iterable的类甚至是一个将这些数据存储在hashMap中的类会更优雅.

我无法弄清楚为什么原始开发人员决定使用这个设计的接口,因为接口从未在任何地方实际实现过.有没有人有任何意见?

你是否同意将这些成员作为常量的可迭代类更合适?

java iterator interface constants

2
推荐指数
2
解决办法
287
查看次数

标签 统计

ctypes ×2

dll ×2

python ×2

constants ×1

interface ×1

ip-address ×1

iterator ×1

java ×1

types ×1