例として、符号化の実例で符号化した「(97)(97)(98)(98)(99)(260)(99)(100)(263)(100)(101)(266)(267)(266)(102)(270)(102)」を前節の手順に従って復号化してみましょう。
-
元データを8ビットの記号とし、最初に256種類の全記号を登録した辞書を用意する。
その場合、記号を8ビットの整数として扱った場合の整数値をそのまま参照番号とする。
そして記号列を記憶するための場所を用意し、読み込む符号のビット数pを9と初期化する。
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
記号列=(空) p=9
-
最初の符号「97」を読み込み、それを8ビットの記号としたものを出力し、同時に記号列として記憶する。
読み込んだ番号=97
出力データ:a
記号列=a p=9
-
次の符号「97」を読み込み、その参照番号が現在の辞書にあるかどうか調べる。
「97」は辞書にあるのでそれに対応する語句「a」を出力し、同時にその語句の最初の記号aを現在の記号列に追加した「aa」を新しい語句として辞書に登録する。
読み込んだ番号=97
出力データ:a
記号列=a p=9
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
登録語句=aa:参照番号=256
-
今出力した「a」をあらためて記号列とする。
記号列=a p=9
-
次の符号「98」を読み込み、その参照番号が現在の辞書にあるかどうか調べる。
「98」は辞書にあるのでそれに対応する語句「b」を出力し、同時にその語句の最初の記号bを現在の記号列に追加した「ab」を新しい語句として辞書に登録する。
読み込んだ番号=98
出力データ:b
記号列=a p=9
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
登録語句=ab:参照番号=257
-
今出力した「b」をあらためて記号列とする。
記号列=b p=9
-
次の符号「98」を読み込み、その参照番号が現在の辞書にあるかどうか調べる。
「98」は辞書にあるのでそれに対応する語句「b」を出力し、同時にその語句の最初の記号bを現在の記号列に追加した「bb」を新しい語句として辞書に登録する。
読み込んだ番号=98
出力データ:b
記号列=a p=9
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
aa | 256 | ab | 257 | bb | 258 |
登録語句=bb:参照番号=258
-
今出力した「b」をあらためて記号列とする。
記号列=b p=9
-
次の符号「99」を読み込み、その参照番号が現在の辞書にあるかどうか調べる。
「99」は辞書にあるのでそれに対応する語句「c」を出力し、同時にその語句の最初の記号bを現在の記号列に追加した「bc」を新しい語句として辞書に登録する。
読み込んだ番号=99
出力データ:c
記号列=b p=9
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
aa | 256 | ab | 257 | bb | 258 | bc | 259 |
登録語句=bc:参照番号=259
-
今出力した「c」をあらためて記号列とする。
記号列=c p=9
-
次の符号「260」を読み込み、その参照番号が現在の辞書にあるかどうか調べる。
「260」は辞書にないので、現在の記号列の最初の記号cを現在の記号列に追加した「cc」を出力し、同時に新しい語句として辞書に登録する。
読み込んだ番号=260
出力データ:cc
記号列=c p=9
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
aa | 256 | ab | 257 | bb | 258 | bc | 259 | cc | 260 |
登録語句=cc:参照番号=260
-
今出力した「cc」をあらためて記号列とする。
記号列=cc p=9
-
次の符号「99」を読み込み、その参照番号が現在の辞書にあるかどうか調べる。
「99」は辞書にあるのでそれに対応する語句「c」を出力し、同時にその語句の最初の記号cを現在の記号列に追加した「ccc」を新しい語句として辞書に登録する。
読み込んだ番号=99
出力データ:c
記号列=cc p=9
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
aa | 256 | ab | 257 | bb | 258 | bc | 259 | cc | 260 | ccc | 261 |
登録語句=ccc:参照番号=261
-
今出力した「c」をあらためて記号列とする。
記号列=c p=9
-
次の符号「100」を読み込み、その参照番号が現在の辞書にあるかどうか調べる。
「100」は辞書にあるのでそれに対応する語句「d」を出力し、同時にその語句の最初の記号dを現在の記号列に追加した「cd」を新しい語句として辞書に登録する。
読み込んだ番号=100
出力データ:d
記号列=c p=9
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
aa | 256 | ab | 257 | bb | 258 | bc | 259 | cc | 260 | ccc | 261 | cd | 262 |
登録語句=cd:参照番号=262
-
今出力した「d」をあらためて記号列とする。
記号列=d p=9
-
次の符号「263」を読み込み、その参照番号が現在の辞書にあるかどうか調べる。
「263」は辞書にないので、現在の記号列の最初の記号dを現在の記号列に追加した「dd」を出力し、同時に新しい語句として辞書に登録する。
読み込んだ番号=263
出力データ:dd
記号列=d p=9
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
aa | 256 | ab | 257 | bb | 258 | bc | 259 | cc | 260 | ccc | 261 | cd | 262 | dd | 263 |
登録語句=dd:参照番号=263
-
今出力した「dd」をあらためて記号列とする。
記号列=dd p=9
-
次の符号「100」を読み込み、その参照番号が現在の辞書にあるかどうか調べる。
「100」は辞書にあるのでそれに対応する語句「d」を出力し、同時にその語句の最初の記号dを現在の記号列に追加した「ddd」を新しい語句として辞書に登録する。
読み込んだ番号=100
出力データ:d
記号列=ddd p=9
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
aa | 256 | ab | 257 | bb | 258 | bc | 259 | cc | 260 | ccc | 261 | cd | 262 | dd | 263 |
登録語句=ddd:参照番号=264
-
今出力した「d」をあらためて記号列とする。
記号列=d p=9
-
次の符号「101」を読み込み、その参照番号が現在の辞書にあるかどうか調べる。
「101」は辞書にあるのでそれに対応する語句「e」を出力し、同時にその語句の最初の記号eを現在の記号列に追加した「de」を新しい語句として辞書に登録する。
読み込んだ番号=101
出力データ:e
記号列=d p=9
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
aa | 256 | ab | 257 | bb | 258 | bc | 259 | cc | 260 | ccc | 261 | cd | 262 | dd | 263 |
登録語句=de:参照番号=265
-
今出力した「e」をあらためて記号列とする。
記号列=e p=9
-
次の符号「266」を読み込み、その参照番号が現在の辞書にあるかどうか調べる。
「266」は辞書にないので、現在の記号列の最初の記号eを現在の記号列に追加した「ee」を出力し、同時に新しい語句として辞書に登録する。
読み込んだ番号=266
出力データ:ee
記号列=e p=9
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
aa | 256 | ab | 257 | bb | 258 | bc | 259 | cc | 260 | ccc | 261 | cd | 262 | dd | 263 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
ddd | 264 | de | 265 | ee | 266 |
登録語句=ee:参照番号=266
-
今出力した「ee」をあらためて記号列とする。
記号列=ee p=9
-
次の符号「267」を読み込み、その参照番号が現在の辞書にあるかどうか調べる。
「267」は辞書にないので、現在の記号列の最初の記号eを現在の記号列に追加した「eee」を出力し、同時に新しい語句として辞書に登録する。
読み込んだ番号=267
出力データ:eee
記号列=ee p=9
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
aa | 256 | ab | 257 | bb | 258 | bc | 259 | cc | 260 | ccc | 261 | cd | 262 | dd | 263 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
ddd | 264 | de | 265 | ee | 266 | eee | 267 |
登録語句=eee:参照番号=267
-
今出力した「eee」をあらためて記号列とする。
記号列=eee p=9
-
次の符号「266」を読み込み、その参照番号が現在の辞書にあるかどうか調べる。
「266」は辞書にあるのでそれに対応する語句「ee」を出力し、同時にその語句の最初の記号eを現在の記号列に追加した「eeee」を新しい語句として辞書に登録する。
読み込んだ番号=266
出力データ:ee
記号列=eee p=9
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
aa | 256 | ab | 257 | bb | 258 | bc | 259 | cc | 260 | ccc | 261 | cd | 262 | dd | 263 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
ddd | 264 | de | 265 | ee | 266 | eee | 267 | eeee | 268 |
登録語句=eeee:参照番号=268
-
今出力した「ee」をあらためて記号列とする。
記号列=ee p=9
-
次の符号「102」を読み込み、その参照番号が現在の辞書にあるかどうか調べる。
「102」は辞書にあるのでそれに対応する語句「f」を出力し、同時にその語句の最初の記号fを現在の記号列に追加した「eef」を新しい語句として辞書に登録する。
読み込んだ番号=102
出力データ:f
記号列=eef p=9
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
aa | 256 | ab | 257 | bb | 258 | bc | 259 | cc | 260 | ccc | 261 | cd | 262 | dd | 263 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
ddd | 264 | de | 265 | ee | 266 | eee | 267 | eeee | 268 | eef | 269 |
登録語句=eef:参照番号=269
-
今出力した「f」をあらためて記号列とする。
記号列=f p=9
-
次の符号「270」を読み込み、その参照番号が現在の辞書にあるかどうか調べる。
「270」は辞書にないので、現在の記号列の最初の記号eを現在の記号列に追加した「ff」を出力し、同時に新しい語句として辞書に登録する。
読み込んだ番号=270
出力データ:ff
記号列=f p=9
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
aa | 256 | ab | 257 | bb | 258 | bc | 259 | cc | 260 | ccc | 261 | cd | 262 | dd | 263 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
ddd | 264 | de | 265 | ee | 266 | eee | 267 | eeee | 268 | eef | 269 | ff | 270 |
登録語句=ff:参照番号=270
-
今出力した「ff」をあらためて記号列とする。
記号列=ff p=9
-
次の符号「102」を読み込み、その参照番号が現在の辞書にあるかどうか調べる。
「102」は辞書にあるのでそれに対応する語句「f」を出力し、同時にその語句の最初の記号fを現在の記号列に追加した「fff」を新しい語句として辞書に登録する。
読み込んだ番号=102
出力データ:f
記号列=fff p=9
語句 | 番号 | 語句 | 番号 | … | 語句 | 番号 |
(0) | 0 | (1) | 1 | … | (255) | 255 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
aa | 256 | ab | 257 | bb | 258 | bc | 259 | cc | 260 | ccc | 261 | cd | 262 | dd | 263 |
語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 | 語句 | 番号 |
ddd | 264 | de | 265 | ee | 266 | eee | 267 | eeee | 268 | eef | 269 | ff | 270 | fff | 271 |
登録語句=fff:参照番号=271
-
今出力した「f」をあらためて記号列とする。
記号列=f p=9
- 符号データ終了。