我知道C中的代码是这样的:
WCHAR string[] = L"string\0";
所以我尝试过(在Python中):
string = ctypes.create_unicode_buffer("String\0")
但这剥夺了Null或其他东西的特征。
如果我使用create_string_buffer
它确实有用。
string = ctypes.create_string_buffer("String\0")
现在字符串末尾有2个空字符:
>>> string.raw
'String\x00\x00'
那为什么这对unicode不起作用?
修改:
这有效(来源:Python Ctypes Null Terminated String Block):
string = ctypes.wstring_at(ctypes.create_unicode_buffer(u'string\0'), 7)
答案 0 :(得分:0)
这很好用。请注意create_unicode_buffer
nul-terminates的单参数init:
>>> r=ctypes.create_unicode_buffer('String\0Other')
>>> r.value # value display stops at first nul.
u'String'
>>> ''.join(r) # gives answer similar to create_string_buffer's raw method.
u'String\x00Other\x00'