今日いただいたくじはプチ凶みたいな感じのやつでした。あまり
気に入らなかったので、消しました。じくなた〜。
先日、QRコードの数字モードの符号化について書きました。
本日は英数字モードの符号化について続けます。
なんか、気が乗りません。あまりおもしろくないかも。
では、英数字モードです。
数字0〜9までと大文字のアルファベット(A〜Z)および
記号(スペース、$、%、*、+、-、.、/、: )が対象となる。
これらの数字には規格書の中で、先ほど紹介した順に
0〜44までの番号が割り振られている。
つまり、数字の0は0番、Aは10番、Bは11番と続いて、
スペースが36番、そして: が最後で44番である。
英数字モードでは入力テキストを二文字ずつに区切って符号化することで
短縮化している。手順は以下の通り。
例:入力データ HELLO
- それぞれの文字の番号を取得すると 17, 14, 21, 21, 24 になる。
- 二つずつのグループにする。 (17, 14) (21, 21) (24)
- 各グループごとに一つ目の数字を45倍して二つ目の数字と足す。
ただし最後の1文字残った場合はそのまま。 - (17, 14) → 17 x 45 + 14 = 779
- (21, 21) → 21 x 45 + 21 = 966
- (24) → 24
- それぞれを11桁の2進数にする。ただし、最後の1文字分は6桁でよい。11桁というのは、3の手順で数値化した二桁の文字の値の最大値が44 x 45 + 44 = 2024 でこれを2進数で表すと111 1110 1000 となり11桁必要だからだ。同様に最後の一桁の場合最大値は44だからそれは6桁で足りる。
- 779 → 011 0000 1011
- 966 → 011 1100 0110
- 24 → 01 1000
- 最後にこれらをつなげて、前にモード指示子と文字数指示子をつける。
以下のようになる。
モード:0010 (英数字)
文字数:0 0000 0101 (5文字)※長さは型番により変わる
データ:011 0000 1011 011 1100 0110 01 1000
結果:00100000001010110000101101111000110011000
ということで、英数字モードは簡単でしたが、
やっぱり、なんかつまらない。くじのせいかな。
0 件のコメント:
コメントを投稿