C++: Convert hex representation of UTF16 char into

2019-06-09 23:13发布

I found an explanation to decode hex-representations into decimal but only by using Qt: How to get decimal value of a unicode character in c++

As I am not using Qt and cout << (int)c does not work (Edit: it actually does work if you use it properly..!):

How to do the following:

I got the hex representation of two chars which were transmitted over some socket (Just figured out how to get the hex repr finally!..) and both combined yield following utf16-representation:

char c = u"\0b7f"

This shall be converted into it's utf16 decimal value of 2943! (see it at utf-table http://www.fileformat.info/info/unicode/char/0b7f/index.htm)

This should be absolut elementary stuff, but as a designated Python developer compelled to use C++ for a project I am hanging this issue for hours....

1条回答
我欲成王,谁敢阻挡
2楼-- · 2019-06-09 23:52

Use a wider character type (char is only 8 bits, you need at least 16), and also the correct format for UTC literals. This works (live demo):

#include <iostream>

int main()
{
    char16_t c = u'\u0b7f';

    std::cout << (int)c << std::endl;  //output is 2943 as expected

    return 0;
}
查看更多
登录 后发表回答