作業を 128B に制限すると、大文字と小文字、数字、およびほとんどの句読点にアクセスできます。また、A および C シンボル体系にシフト インおよびシフト アウトするコードを記述する必要がなくなります。これにより、チェックサムを計算するコードが非常に簡単になります。
Code 128B の開始文字の値は 104 です。すべての Code 128 バリエーションの停止文字の値は 106 ですが、その値は chksum の計算には含まれません。実際の演習では、"Hello" という文字列を選びましょう。Code 128 テーブルにアクセスできることを確認してください。これから説明するすべての値は、ASCII や UTF-8 ではなく、その表に含まれるものではありません。
チェックサムは、開始コードを除いて、バーコード内の位置によって文字の値の倍数を加算することによって計算されます。
スタートコードの位置は「1」ですが、スタートコードに続く最初の文字の位置も「1」です。したがって、スタート コードとデータの最初のバイト ('H') は両方とも 1 倍されます ((104 × 1) + (40 × 1) = 144)。
次の 4 バイトは、段階的に高い乗数を取得します ((69 x 2) + (76 x 3) + (76 x 4) + (79 x 5) = 1065)。すべてを合計すると (144 + 1065)、1209 になります。
PHP でモジュラス演算子 (1209 % 103) を使用して、Code 128B 文字列「Hello」のチェックサム文字として 76 を取得できるはずです (103 は定数です。信頼してください)。したがって、「Hello」を Code 128 バーコードにマップするコードの最終的な配列は、[104 40 69 76 76 79 76 106] です。
文字列の文字値を Code 128B の文字値に変換して、バーコード フォントが期待するものに変換するには、ルックアップ テーブルが必要です。しかし、必要なのは、ループ、配列インデックス、係数の合計のアキュムレータ、および定数値 103 に対するモジュラス演算子だけです。