ruslik R ruslik Регистрация 12 Окт 2013 Сообщения 97 Репутация 0 Спасибо 0 Монет 0 15 Сен 2016 #1 Задача: Пользователь вводит текст, программа читает этот текст и заменяет каждый символ на определённую пару цифр, и выводит этот переведенный текст. Как это сделать?
Задача: Пользователь вводит текст, программа читает этот текст и заменяет каждый символ на определённую пару цифр, и выводит этот переведенный текст. Как это сделать?
Boris B Boris Регистрация 14 Окт 2013 Сообщения 93 Репутация 0 Спасибо 0 Монет 0 15 Сен 2016 #2 смотри пример как перевести текст ANSI/UTF-8 в UTF-16 по сути это и есть пример кодирования/раскодирования unsigned int UCS2FromUTF8(const char *s, unsigned int len, wchar_t *tbuf, unsigned int tlen) { unsigned int ui=0; const UCHAR *us = reinterpret_cast<const UCHAR *(s); unsigned int i=0; while ((i<len) && (ui<tlen)) { UCHAR ch = us[i++]; if (ch < 0x80) { tbuf[ui] = ch; } else if (ch < 0x80 + 0x40 + 0x20) { tbuf[ui] = static_cast<wchar_t((ch & 0x1F) << 6); ch = us[i++]; tbuf[ui] = static_cast<wchar_t(tbuf[ui] + (ch & 0x7F)); } else { tbuf[ui] = static_cast<wchar_t((ch & 0xF) << 12); ch = us[i++]; tbuf[ui] = static_cast<wchar_t(tbuf[ui] + ((ch & 0x7F) << 6)); ch = us[i++]; tbuf[ui] = static_cast<wchar_t(tbuf[ui] + (ch & 0x7F)); } ui++; } return ui; } Позитивный голос 0
смотри пример как перевести текст ANSI/UTF-8 в UTF-16 по сути это и есть пример кодирования/раскодирования unsigned int UCS2FromUTF8(const char *s, unsigned int len, wchar_t *tbuf, unsigned int tlen) { unsigned int ui=0; const UCHAR *us = reinterpret_cast<const UCHAR *(s); unsigned int i=0; while ((i<len) && (ui<tlen)) { UCHAR ch = us[i++]; if (ch < 0x80) { tbuf[ui] = ch; } else if (ch < 0x80 + 0x40 + 0x20) { tbuf[ui] = static_cast<wchar_t((ch & 0x1F) << 6); ch = us[i++]; tbuf[ui] = static_cast<wchar_t(tbuf[ui] + (ch & 0x7F)); } else { tbuf[ui] = static_cast<wchar_t((ch & 0xF) << 12); ch = us[i++]; tbuf[ui] = static_cast<wchar_t(tbuf[ui] + ((ch & 0x7F) << 6)); ch = us[i++]; tbuf[ui] = static_cast<wchar_t(tbuf[ui] + (ch & 0x7F)); } ui++; } return ui; }