繁体   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