【发布时间】:2011-10-02 02:49:38
【问题描述】:
在 C++ 中是否可以将 'const wchar_t *' 转换为 'unsigned char *'?
我该怎么做?
wstring dirName;
unsigned char* dirNameA = (unsigned char*)dirName.c_str();
// I am creating a hash from a string
hmac_sha256_init( hash, (unsigned char*)dirName.c_str(), (dirName.length)+1 );
【问题讨论】:
-
是的。您希望如何存储和使用结果?输入是什么样的?
-
您应该计算字符串的 UTF-16 编码版本或其他字符集的 HMAC 吗? (UTF-8、latin1、Windows-1252 等?)(根据字符编码,你会得到不同的 HMAC,在这一点上你的答案也各不相同!)
-
可能是错误的问题:您要转换 TYPE 还是 MEANING?如果你想转换类型,你应该按照 Larry 的建议使用强制转换。您可能真正想要的是将 Windows UTF-16 字符串转换为其他字符串,然后这里的人们问的问题是:还有什么?具体来说? (UTF-8?根据您的代码页进行一些 ISO-x 编码?等等)