我有一个Numpy布尔向量,并尝试使用C API尽快从中获取一个字节对象。(理想情况下,我希望将向量的二进制值映射到字节对象。)
我可以成功读取向量,并将数据存储在
我可以成功读取向量,并将数据存储在
bool_vec_arr
中。我考虑创建一个整数并以如下方式设置其位:PyBytesObject * pbo;
int byte = 0;
int i = 0;
while ( i < vec->dimensions[0] )
{
if ( bool_vec_arr[i] )
{
byte |= 1UL << i % 8;
}
i++;
if (i % 8 == 0)
{
/* do something here? */
byte = 0;
}
}
return PyBuildValue("S", pbo);
但我不确定如何使用 pbo
中的 byte 值。是否有任何建议?
return PyBuildValue("S", pbo);
没有意义,只会导致引用泄漏(它增加了pbo
的引用计数并返回它,而它本身没有任何改变,但你必须支付解析格式字符串的开销)。你应该直接执行return pbo;
,或者如果你已经在其他地方存储了pbo
的副本以便不能放弃自己的引用,那么在return pbo;
之前应该执行Py_INCREF(pbo);
。 - ShadowRanger