ArgumentOutOfRangeException при преобразовании UTF-32 (HEX) в строку

1

У меня возникли проблемы с преобразованием некоторого HEX в строку UTF-32. Я получаю это сообщение об ошибке

"Действительное значение UTF32 находится между 0x000000 и 0x10ffff включительно и не должно включать суррогатные значения кодовых точек (0x00d800 ~ 0x00dfff). Имя параметра: utf32"

при использовании этого кода

int decodedInt = Convert.ToInt32("D8F5", 16);
string decodedStr = char.ConvertFromUtf32(decodedInt);

когда я использую этот HEX "9FDB", он работает без каких-либо проблем. Что я делаю не так?

  • 0
    Это суррогат и сам по себе не действует.
Теги:
hex
utf-32

1 ответ

0
Лучший ответ

Кодовые точки в диапазоне 0xD800..0xDFFF используются UTF-16 для кодирования кодовых точек вне базовой многоязычной плоскости через суррогатную пару. Они никогда не встречаются в кодированном тексте UTF-32.

Вот почему ошибка сказала

не должны включать суррогатные значения кодовых точек (0x00d800 ~ 0x00dfff)

  • 0
    как я могу преобразовать этот тип гекса

Ещё вопросы

Сообщество Overcoder
Наверх
Меню