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 octetsDécimal
127881
Octets
0x3C 0xD8 0x89 0xDF
Binaire
00111100
11011000
10001001
11011111
Étapes détaillées
- 01
Endianness précisée
On lit chaque code unit avec l'octet de poids faible en premier (
Little Endian).Little Endian (LE) - 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
0xD800→0xDBFF, le code unit bas dans0xDC00→0xDFFF.2 code units · paire de surrogates - 03
Extraire les bits utiles des surrogates
Du high surrogate on retire
0xD800(10 bits hauts), du low surrogate on retire0xDC00(10 bits bas).0000111100 | 1110001001 - 04
Reconstituer le binaire
On concatène les 10 + 10 bits puis on ajoute
0x10000pour retrouver le code point.00001111001110001001 - 05
Convertir en code point
Le binaire vaut
127881en décimal, soitU+1F389en notation Unicode.U+1F389