2007/01/20 [土]
PDP-10 などの計算機では、マシンワードが 36bit なので、主に 8bit が単位の既存の UTF-8、UTF-16、UTF-32 では、36 の約数ではないので、無駄なビットが出てしまい、効率がよくありません。そこで 36bit の約数である 9bit 単位の nonet ごとに処理するのが適切になります。それを口実に、2005 年のジョーク RFC (RFC4042) として提案されたのが UTF-9 と UTF-18 です。ここでは、UTF-9 についての変換方法を説明します。
UTF-9 への変換方法は次の通りです。ただし U を UCS または Unicode のコードポイントを表すことにします。また Bxx という表現は左にある U の xx ビット目の値をあらわしています。数字の中の _ は見やすくするために便宜上挿入した記号です。
変換方法
- 次の表を用いて、U をバイナリ表現に変換します。
U の範囲 (16進) 変換された表現(バイナリ) 0000_0000-0000_00FF 0 B07B06B05B04B03B02B01B00 0000_0100-0000_FFFF 1 B15B14B13B12B11B10B09B08 0 B07B06B05B04B03B02B01B00 0001_0000-00FF_FFFF 1 B23B22B21B20B19B18B17B16 1 B15B14B13B12B11B10B09B08 0 B07B06B05B04B03B02B01B00 0100_0000-7FFF_FFFF 1 B31B30B29B28B27B26B25B24 1 B23B22B21B20B19B18B17B16 1 B15B14B13B12B11B10B09B08 0 B07B06B05B04B03B02B01B00
- バイナリを、変換値とします。
変換例
-
漢字 (0x226F 0x575B) →
00100010_01101111 01010111_01011011 → 変換 →
1_00100010_0_01101111 1_01010111_0_01011011 →
0122006F0157005B
by seclan