unicode字符串中的空字符

时间:2014-08-21 11:29:15

标签: python unicode ctypes

我知道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)

1 个答案:

答案 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'