Реализовать модуль, позволяющий кодировать юникодные строки (наиболее удобно представимые в кодировке 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