繁体   English   中英

UTF8字符到十六进制值字符串

[英]UTF8 char to hex value string

我需要一种将char转换为字符串的十六进制值的方法。

我尝试了几种方法,但所有方法都忽略了UTF8字符。

例如:

取字符:

Ş

如果正确转换,则其十六进制值为0x15E但是此代码仅向我返回0x3F ,这只是字符?

wchar_t mychar = 'Ş';
cout << hex << setw(2) << setfill('0') 
                  << static_cast<unsigned int>(mychar);

我发现一个JavaScript函数,它正是我需要的,但不能把它转换成C ++ 这里

谢谢

问题是您正在将一个char文字分配给wchar_t mychar 由于char只有一个字节长,因此无法存储字符Ş 您必须在文字前加上L ,如下所示:

wchar_t mychar = L'Ş';

关于Unicode,编码等的一篇非常好的文章是Joel Spolsky撰写的《绝对最低限度,每个软件开发人员绝对,肯定地必须了解Unicode和字符集》(无借口!)

即使给它们加上L前缀,wchar_t类型也不能很好地处理国际字符集。

尝试这个:

char16_t mychar16 {u'Ş'}; // Initialized with UTF-16 code
char32_t mychar32 {U'Ş'}; // Initialized with UTF-32 code

cout << showbase << hex << setw(12) << setfill('0')
     << std::setiosflags(ios::left | ios::hex) 
     << static_cast<unsigned int>(mychar16) << endl;

结果:

0x15e0000000

适用于wchar_t类型的字符编码是由实现定义的,因此它可能因一个编译器而异。 char16_t和char32_t类型更适合处理Unicode字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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