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

Тема в разделе "Общие вопросы по С и С++", создана пользователем Titanic, 24 фев 2009.

  1. Titanic

    Titanic Гость

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

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    никак, значения в старших битах после логического и теряются
     
  3. Titanic

    Titanic Гость

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

Поделиться этой страницей