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

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

Titanic

#1
Как осуществить преобразование, обратное этому:
( ((p[ 0 ] & 0x1F) << 6 ) + (p[ 1 ] & 0x3F) )
 

Kmet

Java Team
25.05.2006
1 036
8
#2
никак, значения в старших битах после логического и теряются
 
T

Titanic

#3
Ище попытка:
Имеется два байта 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 (для двухбайтных символов), но я не могу разобраться с этим. Подскажите плиз.