Dr. John James Cobra Dr. John James Cobra - 27 days ago 12
C++ Question

C++: Convert hex representation of UTF16 char into decimal (like python's int(hex_data, 16))

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....

Answer

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