最近,我发现自己在处理二进制数据时使用numpy数据类型代替了ctypes,例如:
dt = np.dtype([
('header', np.uint16),
('points', ([
('x', np.int32),
('y', np.int32),
], (16,))),
])
buffer = file_like.read(dt.itemsize) # type: bytes
为了进行测试,您可以假设
buffer = bytes(range(dt.itemsize))
我一直在努力寻找一个与
ctypes.from_buffer
. 我能想到的一些选择是:
-
data = np.array(buffer).view(dt)[()]
-
data = np.ndarray(shape=(), buffer=buffer, dt=dt)[()]
-
data = np.frombuffer(buffer, dtype=dt).squeeze(axis=-1)[()]