簡體   English   中英

如何將C ++中的空字符序列轉換為Python中的等效字符序列?

[英]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()函數。

有關更多信息,請參閱:ctype-fundamental-data-types

暫無
暫無

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

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