C++:将 UTF16 字符的十六进制表示转换为十进制(如 python 的 int(hex_data, 16))
C++: Convert hex representation of UTF16 char into decimal (like python's int(hex_data, 16))
我找到了将十六进制表示解码为十进制的解释,但只能使用 Qt:
How to get decimal value of a unicode character in c++
因为我没有使用 Qt 并且 cout << (int)c
没有 工作 (编辑:如果你正确使用它,它确实可以工作..! ):
如何执行以下操作:
我得到了通过某个套接字传输的两个字符的十六进制表示(刚刚弄清楚如何最终获得十六进制 repr!..)并且两者的组合收益遵循 utf16-representation:
char c = u"[=12=]b7f"
这个要转换成2943的utf16十进制值!
(在 utf-table http://www.fileformat.info/info/unicode/char/0b7f/index.htm 中查看)
这应该是绝对基础的东西,但作为指定的 Python 开发人员被迫在项目中使用 C++,我将这个问题挂了几个小时....
使用更宽的字符类型(char
只有 8 位,您至少需要 16 位),以及 UTC 文字的正确格式。这有效(live demo):
#include <iostream>
int main()
{
char16_t c = u'\u0b7f';
std::cout << (int)c << std::endl; //output is 2943 as expected
return 0;
}
我找到了将十六进制表示解码为十进制的解释,但只能使用 Qt: How to get decimal value of a unicode character in c++
因为我没有使用 Qt 并且 cout << (int)c
没有 工作 (编辑:如果你正确使用它,它确实可以工作..! ):
如何执行以下操作:
我得到了通过某个套接字传输的两个字符的十六进制表示(刚刚弄清楚如何最终获得十六进制 repr!..)并且两者的组合收益遵循 utf16-representation:
char c = u"[=12=]b7f"
这个要转换成2943的utf16十进制值! (在 utf-table http://www.fileformat.info/info/unicode/char/0b7f/index.htm 中查看)
这应该是绝对基础的东西,但作为指定的 Python 开发人员被迫在项目中使用 C++,我将这个问题挂了几个小时....
使用更宽的字符类型(char
只有 8 位,您至少需要 16 位),以及 UTC 文字的正确格式。这有效(live demo):
#include <iostream>
int main()
{
char16_t c = u'\u0b7f';
std::cout << (int)c << std::endl; //output is 2943 as expected
return 0;
}