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