[英]How can I convert an empty character sequence in C++ to its equivalent in Python?
我在Python中使用ctypes來訪問共享C庫中的函數。 其中一個函數的參數之一需要char
類型的空數組來寫入錯誤消息。 C ++中數組的代碼很簡單;
char messageBuffer[256];
我想在Python中編寫等價物,以便我可以將包含正確數據類型的數組傳遞給函數。 我試過簡單地用長度為256的Python創建和數組,但是我得到了錯誤信息;
mydll.TLBP2_error_message(m_handle, errorCode, messageBuffer)
ArgumentError: argument 3: <class 'TypeError'>: Don't know how to convert parameter 3
任何幫助表示贊賞。
你可以在ctype包中使用create_string_buffer()函數
如果你需要可變內存塊,ctypes有一個create_string_buffer()函數,它以各種方式創建它們。 可以使用raw屬性訪問(或更改)當前內存塊內容; 如果要以NUL終止字符串的形式訪問它,請使用value屬性:
>>> from ctypes import * >>> p = create_string_buffer(3) # create a 3 byte buffer, initialized to NUL bytes >>> print sizeof(p), repr(p.raw) 3 '\\x00\\x00\\x00' >>> p = create_string_buffer("Hello") # create a buffer containing a NUL terminated string >>> print sizeof(p), repr(p.raw) 6 'Hello\\x00' >>> print repr(p.value) 'Hello' >>> p = create_string_buffer("Hello", 10) # create a 10 byte buffer >>> print sizeof(p), repr(p.raw) 10 'Hello\\x00\\x00\\x00\\x00\\x00' >>> p.value = "Hi" >>> print sizeof(p), repr(p.raw) 10 'Hi\\x00lo\\x00\\x00\\x00\\x00\\x00' >>>
要創建包含C類型wchar_t的unicode字符的可變內存塊,請使用create_unicode_buffer()函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.