KH-dha8
これはなに?
- gh4やhh4の仲間で、シンプル化に重きを置いた(つまり効率はあまりよくない)バージョンです。
- 名前の由来:
- 倍々方式が基本なので、doubleのd。
- エンコード長が先頭付近で分かるタイプなのでheaderのh。
- 今後亜種を作るかもしれないので、とりあえずa型。
- 8ビット単位のエンコード方式なので、8。
- そもそもの動機:
- 最大256ビットの整数値をエンコードする必要があって、でも毎回32バイトも書いていたら長くなってしょうがないので、可変長にして短くしたかった。
- hh4でもよかったんだけど、8bit単位に特化してもっとシンプルにできないかなーと思っていた。
フォーマット
0xxxxxxx | 1バイト形式 | 0~0x7f(符号なしの場合) | 10xxxxxx_xxxxxxxx | 2バイト形式 | 0~0x3fff(符号なしの場合) | 110xxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx | 4バイト形式 | 0~0x1fff_ffff(符号なしの場合) | 1110xxxx_..._xxxxxxxx | 8バイト形式 | 0~0x0fff_ffff_ffff_ffff(符号なしの場合) | 11110xxx | 未定義 | | 111110xx | 未定義 | | 1111110x | 未定義 | | 11111110 | 拡張形式 | エンコード長(ヘッダを含まずデータ部分のみの長さ)が後続 | 11111111 | 1バイト形式 | パディング用 |
- 最短フォーマット:
- 0x7fまでなら1バイト形式(0xxxxxxx)
- 0x3fffまでなら2バイト形式(10xxxxxx_xxxxxxxx)
- 0x1fff_ffffまでなら4バイト形式(110xxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx)
- 0xffff_ffffまでなら6バイト形式(11111110_00000100_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx)
ついでに KH-dhb8
- KH-dha8に以下の仕様変更をしたもの:
- 1110xxxx : 拡張形式のコンパクト版。xxxx部分でエンコードバイト数-2を表すので、2~17が表現できる。
- 最短フォーマット:
- 0x7fまでなら1バイト形式(0xxxxxxx)
- 0x3fffまでなら2バイト形式(10xxxxxx_xxxxxxxx)
- 0xffffまでなら3バイト形式(11100000_xxxxxxxx_xxxxxxxxx)
- 0x1fff_ffffまでなら4バイト形式(110xxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx)
- 0xffff_ffffまでなら5バイト形式(11100010_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx)
- 0x00ff_ffff_ffffまでなら6バイト形式(11100011_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx)
- 0xffff_ffff_ffffまでなら7バイト形式(11100100_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx)
- 0x00ff_ffff_ffff_ffffまでなら8バイト形式(11100101_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx)
ついでに KH-dhc8
- KH-dha8に以下の仕様変更をしたもの:
- 110xxxxx_... を3バイト形式のヘッダとする(4バイト形式ではなく)。
- 1110xxxx : 拡張形式のコンパクト版。xxxx部分でエンコードバイト数-4を表すので、4~19が表現できる。
- もはや倍々方式ではないのでdの名はふさわしくないが、名残でdh属のままとする。
- 最短フォーマット:
- 0x7fまでなら1バイト形式(0xxxxxxx)
- 0x3fffまでなら2バイト形式(10xxxxxx_xxxxxxxx)
- 0x001f_ffffまでなら3バイト形式(110xxxxx_xxxxxxxx_xxxxxxxxx)
- 0x00ff_ffffまでなら4バイト形式(11100000_xxxxxxxx_xxxxxxxx_xxxxxxxx)
- 0xffff_ffffまでなら5バイト形式(11100001_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx)
- 0x00ff_ffff_ffffまでなら6バイト形式(11100010_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx)
- 0xffff_ffff_ffffまでなら7バイト形式(11100011_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx)
- 0x00ff_ffff_ffff_ffffまでなら8バイト形式(11100100_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx)
こめんと欄
|