【发布时间】:2010-07-20 08:34:35
【问题描述】:
我正在尝试将 socket.inet_pton 返回的 16 字节数据块转换为无符号字节的 ctypes 数组。我的数据结构如下所示:
类 in6_addr(ctypes.Structure): _fields_ = (("字节", ctypes.c_ubyte * 16),)而 blob 只是:
数据 = socket.inet_pton(socket.AF_INET6, "2001::3")但是,这些尝试会出错:
sin6 = in6_addr() # TypeError: 预期的 c_ubyte_Array_16 实例,得到了 str sin6.Byte = 数据 # TypeError: cast() 参数 2 必须是指针类型,而不是 c_ubyte_Array_16 sin6.Byte = ctypes.cast(数据, ctypes.c_ubyte * 16) # TypeError: 不兼容的类型,LP_c_ubyte 实例而不是 c_ubyte_Array_16 实例 sin6.Byte = ctypes.cast(数据,ctypes.POINTER(ctypes.c_ubyte))全部代码:http://codepad.org/2cjyVXBA
任何想法我需要转换为什么类型?
【问题讨论】:
标签: python sockets casting ctypes ipv6