[問題] 請教處理ctypes dll 回傳 c_ubyte_p 問題
抱歉爬了google找不太到的樣子,來這找高手大大
import ctypes 外部的dll
C code 類似:
static char gp_huge_buffer[1024][1024];
unsigned char *GetBufferAddress(void){
//change gp_huge_buffer contain
return (unsigned char *)gp_huge_buffer;
}
Python 類似去呼叫dll:
mydll = ctypes.cdll.LoadLibrary(path)
mydll.GetBufferAddress.argtypes = []
mydll.GetBufferAddress.restype = ctypes.POINTER(ctypes.c_ubyte)
# Google找到的,好像是在python中拷貝一份,而且好像不能用
p_ubyte = mydll.GetBufferAddress()
byte_array = c_ubyte * buffer_size
bytes = byte_array.from_address(hex(p_ubyte)) # error ! LP_c_ubyte cannot be
# interreted as integer
因為存資料的 buffer 是在 dll 中配置的,C 資料放進去想和 python 的 fd.read()比對
為了速度和記憶體考量下不想在python再重新從dll拷貝出來
請問有辦法向C語言直接拿pointer存取GetBufferAddress回傳位址中的任意byte嗎?
ps 雖然不想用 bytes = byte_array.from_address(hex(p_ubyte))
但想請教一下這樣是為甚麼報錯呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.235.222.156
※ 文章網址: http://www.ptt.cc/bbs/Python/M.1408028735.A.1EB.html
※ 編輯: dctzeng (111.243.146.150), 08/14/2014 23:39:41
推
08/14 23:35, , 1F
08/14 23:35, 1F
→
08/14 23:35, , 2F
08/14 23:35, 2F
→
08/14 23:36, , 3F
08/14 23:36, 3F
→
08/14 23:36, , 4F
08/14 23:36, 4F
→
08/14 23:36, , 5F
08/14 23:36, 5F
→
08/14 23:37, , 6F
08/14 23:37, 6F
→
08/14 23:37, , 7F
08/14 23:37, 7F
→
08/14 23:38, , 8F
08/14 23:38, 8F
→
08/14 23:39, , 9F
08/14 23:39, 9F
→
08/14 23:40, , 10F
08/14 23:40, 10F
→
08/14 23:41, , 11F
08/14 23:41, 11F
→
08/14 23:42, , 12F
08/14 23:42, 12F
推
08/14 23:44, , 13F
08/14 23:44, 13F
→
08/14 23:44, , 14F
08/14 23:44, 14F
→
08/14 23:44, , 15F
08/14 23:44, 15F
→
08/14 23:45, , 16F
08/14 23:45, 16F
→
08/14 23:45, , 17F
08/14 23:45, 17F
→
08/14 23:47, , 18F
08/14 23:47, 18F
→
08/14 23:47, , 19F
08/14 23:47, 19F
→
08/14 23:48, , 20F
08/14 23:48, 20F
→
08/14 23:48, , 21F
08/14 23:48, 21F
→
08/14 23:48, , 22F
08/14 23:48, 22F
→
08/14 23:49, , 23F
08/14 23:49, 23F
→
08/14 23:51, , 24F
08/14 23:51, 24F
→
08/14 23:52, , 25F
08/14 23:52, 25F
→
08/14 23:54, , 26F
08/14 23:54, 26F
推
08/14 23:55, , 27F
08/14 23:55, 27F
→
08/14 23:56, , 28F
08/14 23:56, 28F
推
08/15 00:08, , 29F
08/15 00:08, 29F
→
08/15 00:09, , 30F
08/15 00:09, 30F
→
08/15 00:09, , 31F
08/15 00:09, 31F
→
08/15 00:09, , 32F
08/15 00:09, 32F
→
08/15 00:10, , 33F
08/15 00:10, 33F
→
08/15 00:10, , 34F
08/15 00:10, 34F
→
08/15 00:11, , 35F
08/15 00:11, 35F
→
08/15 00:12, , 36F
08/15 00:12, 36F
→
08/15 00:14, , 37F
08/15 00:14, 37F
我試試 先謝謝
※ 編輯: dctzeng (111.243.146.150), 08/15/2014 00:23:42
推
08/15 00:41, , 38F
08/15 00:41, 38F
→
08/15 00:42, , 39F
08/15 00:42, 39F
→
08/15 00:43, , 40F
08/15 00:43, 40F
→
08/15 00:44, , 41F
08/15 00:44, 41F
※ 編輯: dctzeng (111.243.146.150), 08/15/2014 01:06:02
Python 近期熱門文章
PTT數位生活區 即時熱門文章