Если ваши кодовые точки смежны, просто создайте большой массив char *
и выполните перевод, используя его. Я не очень понимаю, что вы имеете в виду под кодовой точкой UTF-8. UTF-8 имеет представления, а Unicode имеет кодовые точки. Если вам нужны кодовые точки, используйте массив целых чисел.
const int mycode_to_unicode [] = {
0x00ff,
0x0102,
// etc.
};
Вы можете поместить значение, равное -1, если в вашей кодировке есть дыры для отлова ошибок.
Чтобы пойти другим путем, нужно просто создать массив структур того же размера, что-то вроде
struct {
int mycode;
int unicode;
};
копирование ключей массива в mycode и значений в unicode и запуск его через qsort
с функцией, которая сравнивает значения unicode
, затем используя bsearch
с той же функцией для перехода из кодовой точки в вашу кодировку.
Предполагается, что вы хотите использовать C.