Блок задач

4. Задачи со звездочкой

Темы
Сложность 5

Задача «Кодирование UTF-8 <-> UTF-32»

Реализовать модуль, позволяющий кодировать юникодные строки (наиболее удобно представимые в кодировке UTF-32) в кодировку UTF-8 (наиболее компактную кодировку), и декодировать.

Например, строка Hello мир! 🌏 в UTF-32 кодируется как:

00000048 00000065 0000006c 0000006c 0000006f 00000020 0000043c 00000438 00000440 00000021 00000020 0001f30f

А в UTF-8:

48  65  6c  6c  6f  20  d0 bc  d0 b8  d1 80  21  20  f0 9f 8c 8f

Конкретный интерфейс функций остается на ваше усмотрение.

В качестве упражнения можно также добавить поддержку кодировки UTF-16:

0048  0065  006c  006c  006f  0020  043c  0438  0440  0021  0020  d83c df0f