简体   繁体   中英

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM