将c_char_p转换为c_char数组

chr*_*iso 2 python ctypes

我需要通过将其转换为数组来访问char*的内容

这是一个演示:

from ctypes import *

foo = (c_char * 4)()
foo.value = "foo"
print foo.raw # => 'foo\x00'
foo_ptr = cast(foo, c_char_p)
print foo_ptr.value # => 'foo'
Run Code Online (Sandbox Code Playgroud)

现在我想将foo_ptr转换回(c_char*4).这些都不奏效

foo_ = (c_char * 4)(foo_ptr)
foo_ = cast(foo_ptr, c_char * 4)
Run Code Online (Sandbox Code Playgroud)

chr*_*iso 5

找到了

foo_ = (c_char * 4).from_address(foo_ptr._get_buffer_value())

print foo_.raw # => 'foo\x00'
Run Code Online (Sandbox Code Playgroud)