seclan のほえほえルーム

| |

Unicode: UTF-9 への変換方法

・
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 ビット目の値をあらわしています。数字の中の _ は見やすくするために便宜上挿入した記号です。

変換方法

  1. 次の表を用いて、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

  2. バイナリを、変換値とします。

変換例

  • 漢字 (0x226F 0x575B) → 
    00100010_01101111 01010111_01011011 → 変換 → 
    1_00100010_0_01101111 1_01010111_0_01011011 → 
    0122006F0157005B


by seclan

関連


| |

 

配信

5.4 msec