无符号字符数组到宽字符数组/字符串
unsigned char array to wide char array/string
如何从unsigned char
数组转换为宽字符数组wchar_t
或std::wstring
?如何将其转换回unsigned char
阵列?
或者OpenSSL可以从SHA256_Update
生成宽字符散列吗?
尝试以下操作:
#include <cstdlib>
using namespace std;
unsigned char* temp; // pointer to initial data
// memory allocation and filling
// calculation of string length
wchar_t* wData = new wchar_t[len+1];
mbstowcs(&wData[0], &temp1[0], len);
С注意反向投射,请看这里的例子,或者只需再次使用mbstowcs
,但要更改两个第一个自变量的位置。
WideCharToMultiByte函数对Windows开发也很有用,还应该考虑设置区域设置(请参阅一些示例)。
更新:
为了计算unsigned char* temp
指向的字符串的长度,可以使用以下方法:
const char* ccp = reinterpret_cast<const char*>(temp);
size_t len = mbstowcs(nullptr, &ccp[0], 0);
std::setlocale(LC_ALL, "en_US.utf8");
const char* mbstr = "hello";
std::mbstate_t state = std::mbstate_t();
// calc length
int len = 1 + std::mbsrtowcs(nullptr, &mbstr, 0, &state);
std::vector<wchar_t> wstr(len);
std::mbsrtowcs(&wstr[0], &mbstr, wstr.size(), &state);
如何/应该从无符号char数组转换为宽char数组wchar_t或std::wstring?如何将其转换回无符号的char数组?
它们完全不同,所以在大多数情况下,您应该而不是这样做。如果你用真实的代码提供一个特定的问题,我们可能会告诉你更多。
或者OpenSSL可以从SHA256_Update生成宽字符散列吗?
不,OpenSSL无法做到这一点。它产生的散列是由字节而非字符组成的二进制字符串。您负责演示文稿的详细信息,如窄/宽字符集或base64编码。
相关文章:
- 指向指向字符数组的指针数组的指针
- 比较字符数组
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 使用无符号字符数组有效存储内存
- 按字符值访问int数组
- 错误:字符数组的初始值设定项太多
- 对字符数组中的元素执行逐位操作
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- 移动二维数组中的字符
- C++ 传递二维字符数组
- 无法在 C++ 中输入字符数组
- C++ 带结构的数组字符
- 数组字符包含量超出预期
- 读取文件并添加到数组字符
- 如何在Qt中更改或替换数组字符
- 为什么编译器不在参数中传递数组字符 *arr[] 的大小?
- 井字棋数组字符错误
- 分割数组字符