Python 3.5.2
我发现c_wchar_p和c_char_p返回结果的行为与基于ctypes doc的结果不同。来自Python 3.5的ctypes doc:
>>> c_wchar_p("Hello, World")
c_wchar_p('Hello, World')
它返回ctypes字符串。但是我在Python3.5控制台中执行相同cmd的结果:
>>> from ctypes import *
>>> c_wchar_p("Hello, World")
c_wchar_p(1374004842736)
>>> c_wchar_p("Hello, World")
c_wchar_p(1374004841680)
>>> c_wchar_p("Hello, World")
c_wchar_p(1374004842736)
所以看起来orignial字符串部分被内存地址替换。挖掘更多,并发现它是否是Python 2.x,然后返回显示像Python 3.5 ctypes doc所示的字符串。但是在Python 3.x中,它总是返回这些数字。在多台PC上查看,都看到了同样的事情。并且理解了我们可以使用.value返回原始字符串的部分。在create_string_buffer()和create_unicode_buffer()上观察到相同的事情。同时,对于其他数据类型,如c_int(),c_bool,c_void_p等,请不要看到这一点。
提前多多感谢〜