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

标签 php c++ hex

我有一些 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

关于php - 如何在 C++ 中获取俄语字符串的十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45884758/

相关文章:

php - 在不停机的情况下更新服务器文件的正确方法

php - 如何从非拥有文件夹中的 apache 用户运行脚本?

c++ - 检测特定 C++ 类型是否有成员,排除继承的成员

java - 通过增加值排序和显示 TreeMap 问题

PHP 在 5 个变量之间平均切换

java - org.json.JSONException : Value <html><body>&lt;script of type java. lang.String 无法转换为 JSONObject

c++ - 如何将变量定义传递给函数?

c++ - 带有 C++ lambda 的部分应用程序?

html - 十六进制翻译

javascript - 如何正确处理 JavaScript 中的字节读取?如何正确选择岗位