我为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”长。我需要将数据转换为更可行的格式,但我不能将其设为字符串,因为数据包可以包含空字符。有人建议我应该将它转换为什么(以及如何)数据类型?
答案 0 :(得分:1)
在Python 3.x下,您希望"bytes"或"bytearray"类型表示像数据包一样的八位字节流。从那里,您可以操作它或将其转换为字符串,如果您需要显示。但是对于原生数据类型,你很可能想要一个我在想的字节数组。