我正在使用以下函数(我无法更改签名)
cdef extern from "external.h":
int EP_ProtectedStringByID(int ID, char * Buffer, int Len)
这个函数给了我一个宽字符串,但格式为字符串序列。
buf_size = EP_ProtectedStringByID(2, b'', 0)
buf_string_2 = <char *> malloc((buf_size + 1) * sizeof(char))
if EP_ProtectedStringByID(2, buf_string_2, buf_size) != 0:
for i in range(buf_size):
print(buf_string_2[i], end=" - ")
buf_string_2的类型为bytes
buf_string_2的内容为:(你可以看到它是宽字符串)
67 - 0 - 39 - 0 - 101 - 0 - 115 - 0 - 116 - 0 - 32 - 0 - 117 - 0 - 110 - 0 - 32 - 0 - 116 - 0 - 101 - 0 - 120 - 0 - 116 - 0 - 101 - 0 - 32 - 0电话:+86 -10 - 88888888传真:+86 -10 - 88888888114 - 0 - 101 - 0 - 115 - 0 - 32 - 0 - 61 - -40 - -121 - -36 - 60 - -40 - -5 - -33 - 13 - 32 - 66 - 38 - 15 - -2 - 32 - 0 - -23 - 0 - 116 - 0 - 114 -电话:+86 -030 - 88888888传真:+86 -030 - 88888888
相应的序列必须是
“这💇🏻是一个有着雄性特征的文本️!!!”
我想检索这个宽字符串并在python中显示它
实际上,我这样做没有成功的原因转换停止后,“第二个字符”这是**\0**
cdef extern from "cstdlib":
size_t mbstowcs(wchar_t * dest, const char * src, size_t max)
if EP_ProtectedStringByID(2, buf_string_2, buf_size) != 0:
buf_string = <wchar_t *> malloc((buf_size // sizeof(wchar_t) + 1) * sizeof(wchar_t))
mbstowcs(buf_string,buf_string_2,buf_size)
pystr_2 = PyUnicode_FromWideChar(buf_string, -1)
wide_string = str(<object> pystr_2)
print('WideString :', wide_string)
谢谢你的帮忙
1条答案
按热度按时间zf9nrax11#
谢谢大家,