[英]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.