【发布时间】:2021-04-20 06:28:37
【问题描述】:
我正在尝试在 C 中为 python 构建一个模块。该模块有几个行和方法,但其中最重要的一个是有效地传递一个连接的整数表示uint32_t 数组到 python。例如,从下面的代码中
{
uint32_t state[3] = {0x00000300, 0x00001100, 0x00022200}
char charstate[12];
memcpy(charstate, state, 12);
return Py_BuildValue("s#", charstate, 12);
}
我希望在 python 中该十六进制元素的连接的整数表示为 0x000003000000110000022200 = 14167099467300633453056。如您所见,我尝试使用“s#”,但没有成功。请给我一个建议好吗?
【问题讨论】:
-
你的意思是
char charstate[12];?*charstate[12]表示字符串列表。 -
@rickimaru 我更正了,谢谢
-
I expect in python the integer representation字节序呢?从Py_BuildValue的文档中,我看到s#转换了一个C 字符串。charstate的第一个字节是0x00(无论是字节序方式)所以它是一个空字符串...... -
@KamilCuk 例如 0x000003000000110000022200 我预计 14167099467300633453056
-
“例如”是什么意思?
0x000003000000110000022200是一个数字,而不是一个字符串。s#接受一个字符串。一个等于state[0] << 32 | state[1] << 16 | state[2]的数字不 等于memcpy它,因为很可能你是小端的..