将 UInt16* 转换为字符

Converting UInt16* to char

本文关键字:字符 转换 UInt16      更新时间:2023-10-16

我想参考 7zip 的测试应用程序代码

在下一行(第 383 行):

SzArEx_GetFileNameUtf16(&db, i, temp); //Line 383, gets directory and filename

uint16* 值temp获取文件路径的引用表达式(我假设它是一个字符串)。

我有一个常量字符,让我们命名它filePathToCheck它基本上是一个文件路径名。我想要的是一种将 filePathToCheck 值与临时值进行比较的方法,以便我可以"选择"我要解密的文件

我最初的实现是获取 temp 的多字节值,但这给出了一个空字符串,可在下面的方法中找到:

WideCharToMultiByte(CP_UTF8,NULL,temp,sizeof(temp),testa /* char * */, 0, NULL, NULL);

运行测试应用程序(已处理参数)时,Testa 在 WideCharToMultiByte 函数之后保持为空字符串。我是否完全走错了轨道,我应该以另一种方式处理?

示例代码,因为最小代码仍然太大

sizeof(temp)返回 uint * 的大小,即 4 或 8。你想要的是 temp 的长度(以字符为单位),或者如果 temp 以 null 结尾,你可以简单地传递 -1。

testa最好是一个足够大的字节数组(而不是字符指针!下一个参数不应为 0,而应为 sizeof(testa)