gpt4 book ai didi

python - 如何将 C++ 中的空字符序列转换为 Python 中的等效字符序列?

转载 作者:太空狗 更新时间:2023-10-29 21:09:50 33 4
gpt4 key购买 nike

我在 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

任何帮助表示赞赏。

最佳答案

您可以在 中使用 create_string_buffer() 函数ctype 包裹

如果您需要可变内存块,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() 函数。

for more information refer: ctype-fundamental-data-types

关于python - 如何将 C++ 中的空字符序列转换为 Python 中的等效字符序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56957177/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com