#参考(別投稿)
1ファイルのHTML(+JavaScript)で、QRcodeを生成する
https://qiita.com/santarou6/items/db17788158dba38f3a5c
#<本編>QRコードの8種類のマスクを図示する
#例
本例は、一辺57マスの、型番10
#色凡例
マスク相当は白と黒。
(青と黄は、位置検出パターンや位置合わせパターン等でマスク化されない部分である。詳細、JIS規格 X0510 7.8マスク処理を参照。)
*規格では、横方向がj(列位置)で、縦方向がi(行位置)
*左上が原点(0,0)ゼロ始まり
#8種類について
000 → (i+j) mod 2 = 0
001 → i mod 2 = 0
010 → j mod 3 = 0
011 → (i+j) mod 3 = 0
100 → (( i div 2)+(j div 3)) mod 2 = 0
101 → (ij) mod 2 + (ij) mod 3 = 0
110 → ((ij) mod 2 +(ij) mod 3) mod 2 = 0
111 → ((ij)mod 3 + (i+j) mod 2) mod 2 = 0
#各マスク
##100 → (( i div 2)+(j div 3)) mod 2 = 0
##101 → (ij) mod 2 + (ij) mod 3 = 0
##110 → ((ij) mod 2 +(ij) mod 3) mod 2 = 0
##111 → ((ij)mod 3 + (i+j) mod 2) mod 2 = 0
#ソースコード(HTML/JavaScript)
https://github.com/santarou6/QRcode_javascript/blob/main/t_c99-mask.html
https://github.com/santarou6/QRcode_javascript/blob/main/index_c99-mask.js
#QRコードにおけるマスクの指定
上記3ビットのマスク種類だが、QRコードの以下(赤マス)の位置に指定してある。(より正しくは、101とXORとった値。)マスクを外せば、QRコードは、通常の文字コードがビット化されて並んでいるだけなので、読もうと思えば人力でも読める(はず)。
横方向は、左から0→1→2ビット。縦方向は、下から0→1→2ビット。(同じものが2か所に記載ある。)