首先,我是 ctypes 的新手,并且确实搜索了我的问题的答案。绝对会欣赏这里的任何见解。
我有一个由另一个工具提供给我的字节字符串。它包含看起来是十六进制和其他值的内容。我正在创建 c_char_p 对象,如下所示:
mybytestring = b'something with a lot of hex \x00\x00\xc7\x87\x9bb and other alphanumeric and non-word characters' # Length of this is very long let's say 480
mycharp = c_char_p(mybytestring)
我还创建了一个 c_char_Array 如下:
mybuff = create_string_buffer(mybytestring)
问题是当我将 mycharp 或 mybuff 发送到 c++ 库 .so 函数时,字符串在 NULL 终止符处被截断(第一次出现 '\x00')
我正在加载 c++ 库并调用该函数,如下所示:
lib_handle = cdll.LoadLibrary(mylib.so)
lib_handle.myfunction(mycharp)
lib_handle.myfunction(mybuff)
c++ 函数需要一个 char *
有人知道如何发送包含 NULL 终止符 ('\x00') 的整个字符串吗?
谢谢