* hh4エンコードについて
-(by [[K]], 2014.08.13)
** (0)
-フロントエンドコードや、バックエンドコードを理解するために、hh4の説明が必要になったので書いてみます。
** (1)
-一般に数値データを記述する際には、8ビットずつに区切ったり32ビットずつに区切ったりしますが、hh4ではこの区切る幅を数値に合わせて増減できる「可変長エンコード」です。
-一般に数値データを記述する際には8ビットずつに区切ったり32ビットずつに区切ったりしますが、hh4ではこの区切る幅を数値に合わせて増減できる「可変長エンコード」です。
-4ビットの倍数で長さを選択できます。

** (2) 符号なし整数で、0~0xfffをエンコード
-0は次のいずれの方法でも記述できます。
--0(4ビット)
--80(8ビット) : 0x80を加算して書く
--c00 (12ビット) : 0xc00を加算して書く
--e000(16ビット) : 0xe000を加算して書く
-基本フォーマット:
--4ビット形式で表現できるのは、0x0~0x6です(エンコード結果:0~6)。
--8ビット形式で表現できるのは、0x00~0x3fです(エンコード結果:80~bf)。
--12ビット形式で表現できるのは、0x000~0x1ffです(エンコード結果:c00~dff)。
--16ビット形式で表現できるのは、0x000~0xfffです(エンコード結果:e000~efff)。
-パディング:
--エンコードデータの前に任意個のfをつけることができます。これを付加しても値は変化しません。
--f0、ff0、f80、これらはすべて0を意味します。f0は4ビットモードの0ですし、ff0も4ビットモードの0ですし、f80は8ビットモードの0です。
-複数の数値を並べるときは、このように書きます。
--{ 0x1, 0x23, 0x456 } の場合:
 1a3e456 -> 1a 3e 45 6?
** (3) 拡張モード
-より大きなビット幅のために拡張モードがあります。拡張モードはまず"7"を書き、その後に長さをあらわす数値が後続し、その後に数値本体をおきます。
-0x1234の例:
--741234(24ビット)
--7501234(28ビット)
--76001234(32ビット)
--7870001234(40ビット) 
--78800001234(44ビット)
-拡張モードの前にも任意個のfをおくことができます。

* こめんと欄
#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS