Информатика Unicode UTF-8 UTF-16 объясните простыми словами кодирование из юникода в UTF-8 и в UTF-16 и декодирование обратно (изначальный код U+E110) особенно я не понимаю как из 0xE110 - 0x10000 получается 0xD0110 и как из 1101000000 + 0xD800 получается 0xDB40 и 0100010000 + 0xDC00 получается 0xDD10 как они складываются и вычитаются, это из примера кодирования кодирование UTF -8 я ваще полностью не понял в примере
Кодирование Unicode в UTF-8: UTF-8 - это способ представления символов Юникода в виде последовательности байтов. Для кодирования символов Unicode в UTF-8 сначала определяется их кодовая точка в шестнадцатеричной системе счисления. Затем по заданным правилам определяется, какое количество байтов нужно для представления символа в UTF-8 (однобайтовый, двухбайтовый, трехбайтовый или четырехбайтовый).
Декодирование UTF-8: При декодировании UTF-8 обратно в Unicode просто происходит обратная операция - представление последовательности байтов в виде символов Юникода.
Пример для символа U+E110: В шестнадцатеричной системе счисления E110 равен 57616, а 10000 равен 65536. Поэтому 0xE110 - 0x10000 = 0xD110, а не 0xD0110.
Сложение кодов для получения символа в UTF-16: Такие символы, как U+E110 (57616), в UTF-16 кодируются двумя 16-битными кодовыми единицами (1101100110000000). При этом к вычисленным значениям добавляются константы 0xD800 и 0xDC00 соответственно. Поэтому 1101100110000000 + 0xD800 = 0xDB40, а 0100010000 + 0xDC00 = 0xDD10.
Надеюсь, эта информация поможет вам лучше понять кодирование и декодирование символов юникода в UTF-8 и UTF-16.
Кодирование Unicode в UTF-8:
UTF-8 - это способ представления символов Юникода в виде последовательности байтов.
Для кодирования символов Unicode в UTF-8 сначала определяется их кодовая точка в шестнадцатеричной системе счисления. Затем по заданным правилам определяется, какое количество байтов нужно для представления символа в UTF-8 (однобайтовый, двухбайтовый, трехбайтовый или четырехбайтовый).
Декодирование UTF-8:
При декодировании UTF-8 обратно в Unicode просто происходит обратная операция - представление последовательности байтов в виде символов Юникода.
Пример для символа U+E110:
В шестнадцатеричной системе счисления E110 равен 57616, а 10000 равен 65536.
Поэтому 0xE110 - 0x10000 = 0xD110, а не 0xD0110.
Сложение кодов для получения символа в UTF-16:
Такие символы, как U+E110 (57616), в UTF-16 кодируются двумя 16-битными кодовыми единицами (1101100110000000). При этом к вычисленным значениям добавляются константы 0xD800 и 0xDC00 соответственно.
Поэтому 1101100110000000 + 0xD800 = 0xDB40, а 0100010000 + 0xDC00 = 0xDD10.
Надеюсь, эта информация поможет вам лучше понять кодирование и декодирование символов юникода в UTF-8 и UTF-16.