Преобразование текста в шестнадцатиричный формат utf-8

Программа для общения с МК дисплея. Чтобы тот мог вывести какой-то текст необходимо каждую букву преобразовать в шестнадцатиричный формат: "я кот" -> "044f 0020 043a 043e 0442", и т.п..

Соответственно ТЗ:

  1. преобразовать любой текст заранее известного объема байтов в шестнадцатиричный формат;
  2. так как один символ состоит из двух байтов поместить значения байтов в разные ячейки массива, служащего выходным буфером;
  3. сократить по возможности код.

Из решений, что я находил везде используются какие-либо библиотеки, чего я делать категорически не желаю. Остановился на варианте и использованием switch структуры, теоретически самый простой, но не самый красивый вариант, т.к. со всеми используемыми символами выйдет кейсов 150. Возможно я изобретаю велосипед, есть ли более грамотное решение?

//hpp

class Interface {
void control(void);
void hex_transform(const char[], unsigned char n_symb);
unsigned char text60bytes[60]; //массив для вывода текста на 30 символов
};

//cpp

#include "Interface.hpp"
extern Interface inter;
Interface inter;

void Interface::control(void) {
inter.hex_transform("Любя, съешь щипцы, — вздохнёт.", 30);
}

void Interface::hex_transform(const char text[], unsigned char n_symb) {
char letter;
for (unsigned char n_letter = 0; n_letter < n_symb; n_letter++){
letter = text[n_letter];

switch (letter){
case /*один из символов*/:
inter.text60bytes[2*n_letter - 1] = /*byte*/;
inter.text60bytes[2*n_letter] = /*byte*/;
break; 
}
}
}

Ответы (0 шт):