木曜日, 8月 11, 2011

QRコードを作るプログラムを作る(3)

暑い日が続いてますなあ。
あまりに暑いので、半ズボンにTシャツで仕事を
してます。ハワイ気分でプログラミング。
BGMにはハワイのFMをかけたりして。
これこれ
http://www.hawaiian105.com/

さて、QRコードのつづき。
今日は8ビットバイトモードの符号化だ。

これは簡単に言うとASCIIコードというかシフトJISの
文字コードをそのまま使うものである。
いわゆる半角文字などといわれるものです。

よって、単純に 入力データの文字コードを
2進数で表せばよい。

例) ab12 の場合


  1. 文字コードは 61 62 31 32 
  2. 2進数では 00111101 00111110 00011111 00100000
  3. モード指示子 0100
  4. 文字数指示子 00000100 (型番により桁数が違う)
  5. 全部つないで
    • 0100 00000100 00111101 00111110 00011111 00100000


8ビットバイトモード以上。

次に漢字モードも続けます。
漢字モードの漢字とはシフトJISの2バイト文字コード(16ビット)を
13ビットに圧縮するものだ。

文字コードが二つの範囲に分かれる。

  • 16進数で 8140〜9FFCまでのグループ
    • 8140を引く
  • 16進数で E040〜EBBFまでのグループ
    • C140を引く
その後下記のように処理する
  • 上記の結果の上位バイトにC0を掛ける
  • その結果に下位バイトを足す。
  • 13ビットの2進数に変換

規格書の例ですが、 ”点” という文字の場合で要領を示すと

  1. 文字コードは 935F
  2. 8140 を引く 121F
  3. 上位バイト(12)にC0を掛ける D80
  4. 下位バイト(1F)を足す D9F
  5. 13ビットの2進数 0 1101 1001 1111
  6. モード指示子は 1000
  7. 文字数指示子は8又は10又は12ビットの2進数

というわけで、数字、英数字、8ビットバイトモード、漢字モードと
ここまで順調に符号化すすんだ。
混在モードは以上のモードを切り替えながら符号化するものだ。
モードを切り替えるたびに、モード指示子と文字数指示子が
入るので、やたらめったら、モードを切り替えるべきではない。
その辺の切り替えの指針は規格書にも載っているが、絶対ではない。

私は、だいたい、規格書の指針を参考にやりました。

続く。

0 件のコメント: