[英]Passing binary data from C to Python using “Extending Python with C”
可以將二進制數據從 C 傳遞到 Python。 例如,可以將 state 的字節傳遞給 Python?。 也許使用其中一些功能https://docs.python.org/3/c-api/bytes.html ?
uint32_t state[3] = {0x00000300, 0x00001100, 0x00022200};
unsigned char charstate[1420];
memcpy(charstate, (unsigned char *)state, sizeof(uint32_t)*3);
printf("charstate: %s", charstate);
return PyBytes_FromString(charstate);
我嘗試 PyBytes_FromString 沒有成功(可能是因為 state 不是字符串)
已編輯
另外,我嘗試了@John Zwinck 的回答
uint32_t state[3] = {0x00000300, 0x00001100, 0x00022200};
char charstate[12];
memset(charstate, 0, 12);
memcpy(charstate, state, sizeof(uint32_t)*3);
return PyBytes_FromStringAndSize(charstate, sizeof(uint32_t)*3);
現在我在 Python [0, 3, 0, 0, 0, 17, 0, 0, 0, 34, 2, 0] 中看到不等於 state(在 C 中)。
PyBytes_FromString()
假設您將一個以空字符結尾的字符串傳遞給它。 但是你的字符串中間有00
個字節,這會使 Python 字符串比你想要的短。
相反,請執行以下操作:
PyBytes_FromStringAndSize(charstate, sizeof(uint32_t)*3)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.