繁体   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