2011-11-01 68 views
0

我寫了一個關於python3的libpcap的包裝類,但我正在努力尋找有關如何處理python中的ctype數組的有用文檔。訪問ctypes數據陣列

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

在Python 3.x中,您希望"bytes""bytearray"類型能夠像數據包一樣表示八位字節流。從那裏,你可以操縱它或將其轉換成一個字符串,如果你需要顯示。但對於本機數據類型,你很可能想要一個字節陣列,我在想。