[英]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.