python:将字符串转换为c_ubyte_Array_8
我有一个用C++写的程序,它会写一些块状的 unsigned char
数据。比如,我会写 unsigned char data[8]
。
现在,我在用Python(具体来说是用 ctypes
这个功能)来读取这些数据,并在我的工具中进行缓存,以便后续处理。
问题
当我从文件中读取数据,并把它分成8个一组的时候,得到的数据都是字符串格式。我有以下的结构:
class MyData(Union):
_fields_=[ ("data",8 * c_ubytes), ("overlap", SelfStructure) ]
现在,我想把数据传递如下:
dataObj = MyData(str[0:8])
但是出现了一个错误,提示 expected c_ubyte_Array_8 instance, got str
。我觉得我需要把 string
转换成 array of size 8 of c_ubyte
。我试过用 bytearray
,但是没有成功。请告诉我该怎么做。
1 个回答
2
试试这个:
(ctypes.c_ubyte * 8)(*[ctypes.c_ubyte(ord(c)) for c in str[:8]])