Unicodeの𩸽をUTF-16で求める
4バイトになるパターン(サロゲートペア)
𩸽はU+29E3D
UTF-16では0xD867DE3D(ビッグエンディアン)
リトルエンディアンだと0x67D83DDE
UTF-16の求め方で実際に求めてみる
1. 符号化したい文字の符号位置を0x29E3Dとする
2. 符号位置0x29E3Dの上限を0x10FFFFとする
2.1. 0x29E3D < 0x10000ではないので次へ
2.2. n >= 0x10000なら以下のルールに従ってサロゲートペアを求める
n1 = 0x29E3D - 0x10000
= 0x19E3D
= 1 10011110 00111101
= 0001100111 1000111101 ... (10桁ずつに揃える)
w1 = 0xD800 + 00 01100111
= 11011000 00000000 + 00 01100111
= 11011000 01100111
= 0xD867
w2 = 0xDC00 + 10 00111101
= 11011100 00000000 + 10 00111101
= 11011110 00111101
= 0xDE3D
0xD867が上位サロゲート、0xDE3Dが下位サロゲート