访问ctypes数据数组

时间:2011-11-01 06:17:07

标签: python-3.x ctypes

我为python3编写了一个围绕libpcap的包装类,但是我很难找到有关如何在python中处理ctype数组的有用文档。

self.packetdata = ctypes.POINTER(ctypes.c_ubyte*65536)() 
....
return  self.pkthdrPointer.contents.len,self.packetdata.contents

我这样访问它..

#!/usr/bin/python3.2 
from pycap import pycap
packet = pycap(interface="wlan0", count=10)
for len,data in packet:
    print(type(data))

输出如下:

<class 'pcap_struct.c_ubyte_Array_65536'>
<class 'pcap_struct.c_ubyte_Array_65536'>
<class 'pcap_struct.c_ubyte_Array_65536'>
<class 'pcap_struct.c_ubyte_Array_65536'>

现在数组初始化为65536 0,数据包数据为“len”长。我需要将数据转换为更可行的格式,但我不能将其设为字符串,因为数据包可以包含空字符。有人建议我应该将它转换为什么(以及如何)数据类型?

1 个答案:

答案 0 :(得分:1)

在Python 3.x下,您希望"bytes""bytearray"类型表示像数据包一样的八位字节流。从那里,您可以操作它或将其转换为字符串,如果您需要显示。但是对于原生数据类型,你很可能想要一个我在想的字节数组。