【发布时间】:2020-05-28 13:31:23
【问题描述】:
我正在用 C 语言编写一个 python 扩展,并试图将一个字节对象传递给我的函数。显然,'s' 标记是用于字符串的;我试过'O'、'N'和其他一些没有运气的人。有没有可以用来解析字节对象的令牌?如果没有,是否有其他方法来解析字节对象?
static PyObject *test(PyObject *self, PyObject *args)
{
char *dev;
uint8_t *key;
if(!PyArg_ParseTuple(args, "ss", &dev, &key))
return NULL;
printf("%s\n", dev);
for (int i = 0; i < 32; i++)
{
printf("Val %d: %d\n", i, key[i]);
}
Py_RETURN_NONE;
}
从 python 调用:test(b"device", f.read(32)).
【问题讨论】:
-
如果您使用 Python 3,则 test 函数调用中的第一个参数是 unicode 字符串,而不是字节字符串。你需要改写
b"device"。 -
不,第一个参数应该是包含设备名称的 Unicode 字符串。第二个参数是从文件中作为字节对象读取的加密密钥。
标签: python c python-3.x python-c-api python-extensions