Python ctypes中的数组强制转换

2024-09-30 22:25:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试转换插座到一个无符号字节的ctypes数组中。我的数据结构如下:

class in6_addr(ctypes.Structure):
    _fields_ = (("Byte", ctypes.c_ubyte * 16),)

而这个斑点只是:

^{pr2}$

但是,这些尝试会出错:

sin6 = in6_addr()

# TypeError: expected c_ubyte_Array_16 instance, got str
sin6.Byte = data
# TypeError: cast() argument 2 must be a pointer type, not c_ubyte_Array_16
sin6.Byte = ctypes.cast(data, ctypes.c_ubyte * 16)
# TypeError: incompatible types, LP_c_ubyte instance instead of c_ubyte_Array_16 instance
sin6.Byte = ctypes.cast(data, ctypes.POINTER(ctypes.c_ubyte))

所有代码:http://codepad.org/2cjyVXBA

你知道我要演什么类型的吗?在


Tags: instancedata字节符号数组bytectypesarray
1条回答
网友
1楼 · 发布于 2024-09-30 22:25:59

在这里我可能完全错了(这看起来确实有点复杂),但这对我很有效:

sin6.Byte = (ctypes.c_ubyte*16)(*list(bytearray(data)))

我必须将数据转换成一个整数列表,并为构造函数解压。一定有更简单的方法!在

相关问题 更多 >