簡體   English   中英

將 C 緩沖區轉換為 python 字節 object 的最快方法

[英]Fastest way to convert a C buffer into a python bytes object

我有一些 C 代碼將數據傳遞給回調。 回調定義為:

typedef void (*packetHandlerCb)(uint8_t *data, uint32_t len);

我想為此回調設置一個 python 處理程序,所以我做了類似的事情:

def handle_packet(packet_data, packet_len):
    return bytes(ctypes.cast(packet_data, ctypes.POINTER(ctypes.c_ubyte * packet_len))[0])

PACKET_CB = ctypes.CFUNCTYPE(None, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_uint)
cb = PACKET_CB(handle_packet)

我很好奇是否有更有效的方法將 C 緩沖區轉換為 python 字節 object

似乎我可以簡單地執行bytes(packet_data[:packet_len]) ,這在我的計算機上似乎要快 30%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM