如何在 c++ 中获取俄语字符串的十六进制值



我有一些php代码,它通过执行以下操作获取俄语字符串并将其转换为十六进制:

$string = "Ф";
$hex='';
for ($i=0; $i < strlen($string); $i++){
$hex .= dechex(ord($string[$i]));
}
echo $hex;

这将产生我正在寻找的正确输出:

d0a4

我试图在C++重现这些结果,但没有成功。如果我做这样的事情,似乎 c++ 返回的十六进制值为 424:

char16_t strg(L"Ф");

wstring strg(L"Ф");

short strg(L'Ф');

请帮助我在C++中重现d0a4值。谢谢。

试试这个

// wide character data
std::wstring wstr =  L"Ф";  
// wide to UTF-8
std::wstring_convert<std::codecvt_utf8<wchar_t>> conv1;
std::string u8str = conv1.to_bytes(wstr);
std::cout << "UTF-8 conversion produced " << u8str.size() << " bytes:n";
hex_print(u8str);
// wide to UTF-16le
std::wstring_convert<std::codecvt_utf16<wchar_t, 0x10ffff, std::little_endian>> conv2;
std::string u16str = conv2.to_bytes(wstr);
std::cout << "UTF-16le conversion produced " << u16str.size() << " bytes:n";
hex_print(u16str);

参考: http://en.cppreference.com/w/cpp/locale/wstring_convert/to_bytes

最新更新