将unsigned char(BYTE)数组转换为const t_wchar* (LPCWSTR)
Converting a unsigned char(BYTE) array to const t_wchar* (LPCWSTR)
好吧,所以我有一个字节数组,我需要最终转换为LPCWSTR或const WCHAR*在内置函数中使用。我已经能够用printf打印出字节数组,但现在我需要将其转换为字符串,我有问题…主要是我不知道如何将这样的东西转换为非数组类型。
BYTE ba[0x10];
for(int i = 0; i < 0x10; i++)
{
printf("%02X", ba[i]); // Outputs: F1BD2CC7F2361159578EE22305827ECF
}
所以我基本上需要同样的东西,但不是打印数组,我需要将其转换为LPCWSTR或WCHAR甚至字符串。我遇到的主要问题是将数组转换为非数组形式。
LPCWSTR
表示一个UTF-16编码的字符串。您所显示的数组内容超出了7位ASCII范围,因此除非BYTE
数组已经用UTF-16编码(您所显示的数组不是,但如果是,您可以使用简单的类型强制转换),否则您将需要转换为UTF-16。在进行转换之前,您需要知道数组的特定编码,例如使用Win32 API MultiByteToWideChar()
函数,或第三方库,如iconv或ICU,或c++ 11中的内置语言环境转换器等。那么数组的实际编码是什么,数组数据从哪里来?例如,它不是UTF-8,所以它必须是别的东西。
好了,我搞定了。现在我可以将BYTE数组转换为char* var.感谢帮助,但在这种情况下格式化不是一个大问题。我很感激你的帮助,有一些额外的输入总是好的。
// Helper function to convert
Char2Hex(unsigned char ch, char* szHex)
{
unsigned char byte[2];
byte[0] = ch/16;
byte[1] = ch%16;
for(int i = 0; i < 2; i++)
{
if(byte[i] >= 0 && byte[i] <= 9)
{
szHex[i] = '0' + byte[i];
}
else
szHex[i] = 'A' + byte[i] - 10;
}
szHex[2] = 0;
}
// Function used throughout code to convert
CharStr2HexStr(unsigned char const* pucCharStr, char* pszHexStr, int iSize)
{
int i;
char szHex[3];
pszHexStr[0] = 0;
for(i = 0; i < iSize; i++)
{
Char2Hex(pucCharStr[i], szHex);
strcat(pszHexStr, szHex);
}
}
相关文章:
- MacOS通过在莫哈韦"wchar.h"下破碎的自制啤酒发出叮当声
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- 'const char*'和'WCHAR*'
- 为什么需要与 WCHAR 相关的代码处理
- 无法使用 mingw-w64 g++ 编译:找不到 <wchar.h>
- 无法将参数 1 从 WCHAR 转换为常量字符 *
- 无法使用 swprintf 在 WCHAR* 中打印字符*
- -fshort-wchar 和 std::wstring - 分段错误
- 我应该使用 wchar 还是 char 来加密?
- 【MacOSX 10.15.1】使用 odb 生成数据库,致命错误:wchar.h:没有这样的文件或目录 #include < wchar.h>
- 如何在 C++ 中的 wcstok 中使用常量 WCHAR* 变量?
- 将字符串文本常量定义为 char const* 和 wchar const*
- 比较嵌套 for 循环中的两个 wchar 数组?
- wchar 模式下 pugixml 的链接错误
- C++ 在参数中将字符串转换为 LPCWSTR
- strcmp 错误'WCHAR [260]' 'const char *'
- 'Cannot add two pointers'添加带有 WCHAR 的 LPCWSTR
- CPP Windows 字符串转换混淆了 CStringA 和 LPCWSTR
- 如何将CString转换为使用WCHAR的Windows API和自定义函数?
- C++:将WCHAR转换为LPCWSTR - 实际工作示例