簡體   English   中英

將字節字符串從 Python 傳遞到 C

[英]Passing byte string from Python to C

我正在用 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("device", f.read(32))

如果您閱讀解析格式字符串 docs ,就很清楚了。

s僅用於從str對象獲取NUL終止的 UTF-8 編碼的 C 樣式字符串(因此它適用於您的第一個參數,但不適用於您的第二個參數)。

y*在文檔中特別提到(在原文中強調):

這是接受二進制數據的推薦方式。

y#也可以工作,代價是要求調用者提供不可變的類似bytes的對象,不包括像bytearraymmap.mmap的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM