Осуществить обратное преобразование

  • Автор темы Автор темы Titanic
  • Дата начала Дата начала
T

Titanic

Как осуществить преобразование, обратное этому:
( ((p[ 0 ] & 0x1F) << 6 ) + (p[ 1 ] & 0x3F) )
 
никак, значения в старших битах после логического и теряются
 
Ище попытка:
Имеется два байта 0xD0 и 0xA2 (это UNICODE символ 'русская Т' закодированный в UTF-8)

в результате следующего действия:
unsigned short x = ( ((0xD0 & 0x1F) << 6 ) + (0xA2 & 0x3F) ); // Раскодирование в из UTF-8 в UNICODE

получаю x = 0x0422 (это UNICODE символ 'русская Т' )

Надо из 0x0422 получить обратно 0xD0 и 0xA2 или 0xD0A2
т.е надо закодировать в UTF-8

Кодирование производится так: 110xxxxx 10xxxxxx (для двухбайтных символов), но я не могу разобраться с этим. Подскажите плиз.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab