charset.school
Décoder UTF-16

sandbox

Sandbox UTF-16 (décodage)

Convertis une suite d'octets UTF-16 en code point Unicode, en précisant l'endianness.

Hex (avec ou sans 0x). UTF-16 prend 2 ou 4 octets par code point.

Endianness
U+1F389🎉
4 octets

Décimal

127881

Octets

0x3C 0xD8 0x89 0xDF

Binaire

00111100
11011000
10001001
11011111

Étapes détaillées

  1. 01

    Endianness précisée

    On lit chaque code unit avec l'octet de poids faible en premier (Little Endian).

    Little Endian (LE)
  2. 02

    Identifier le nombre de code units

    4 octets = paire de surrogates pour un code point au-delà du BMP. Le code unit haut est dans 0xD8000xDBFF, le code unit bas dans 0xDC000xDFFF.

    2 code units · paire de surrogates
  3. 03

    Extraire les bits utiles des surrogates

    Du high surrogate on retire 0xD800 (10 bits hauts), du low surrogate on retire 0xDC00 (10 bits bas).

    0000111100 | 1110001001
  4. 04

    Reconstituer le binaire

    On concatène les 10 + 10 bits puis on ajoute 0x10000 pour retrouver le code point.

    00001111001110001001
  5. 05

    Convertir en code point

    Le binaire vaut 127881 en décimal, soit U+1F389 en notation Unicode.

    U+1F389
charset.school

Outil pédagogique. Pas de tracking, pas de pub.

Développé par Florent Sorel