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;
}