python:将字符串转换为c_ubyte_Array_8

0 投票
1 回答
2663 浏览
提问于 2025-04-17 14:48

我有一个用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]])

撰写回答