我有一个bool
s的Numpy向量,我正在尝试使用capi从中尽快获得一个bytes
对象。(理想情况下,我希望将向量的二进制值映射到bytes对象。)
我可以成功地读入向量,并且我拥有bool_vec_arr
中的数据。我想创建一个int
并用这种方式设置它的位:
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值。有人有什么建议吗?你知道吗
您需要存储刚刚完成的字节。你的问题是你还没有创建一个实际的} 要获得大小正确的
bytes
对象来填充,所以就这样做吧。您知道结果必须是多长时间(bool向量大小的八分之一,向上舍入),所以use ^{bytes
对象,请边走边填充它。你知道吗您只需分配:
其中,加7然后除以8取整,以确保所有位都有足够的字节,然后在完成一个字节后分配给相应的索引,例如:
如果最后一个字节可能不完整,您需要决定如何处理这个问题(pad位是出现在左边还是右边,最后一个字节是否被省略,因此不应该对分配进行四舍五入等等)。你知道吗
相关问题 更多 >
编程相关推荐