吳俊杰



之前我們通過探究條形碼的規律,得出了一些規律,即用等間距的黑色線條1表示黑色,0表示白色。接下來我們就對所有的code39型條形碼進行完全解密。
● 條形碼的解密
通過亮度解析的程序,我們可以將條形碼生成器生成的單一字符0~9用下頁表1表示出來,為了明確每個數字和字母的位置,我們給每一個字元都規定了一個編號。
表1 ?數字0~9的39碼編碼對映表
編號 字元 邏輯型態
0 0 101001101101
1 1 110100101011
2 2 101100101011
3 3 110110010101
4 4 101001101011
5 5 110100110101
6 6 101100110101
7 7 101001011011
8 8 110100101101
9 9 101100101101
同理,我們可以找到字元A~Z以及一些特殊符號的邏輯形態,并且繼續之前數字編號的順序給他們一個唯一的編號,如表所示1。
我們可以看出所有字母的邏輯形態的兩邊都是1,這保證了兩邊都有一段黑色,保證了條碼長度的穩定。而且在形如下圖的條碼的兩端都有一個*字符的條碼,確定了條形碼的有效信息的范圍。
至此,我們就像掌握了一種英文的書寫方式一樣,甚至可以用條形碼的方式寫一首密碼的小詩,通過簡單的Scratch程序,我們就可以將英文翻譯成條形碼表示出來。
● 條形碼的安全校驗
為了讓條形碼的解碼過程更加準確,code39型條形碼的設計者,設計了解碼校驗的功能,事實上校驗的思想在所有的信息傳遞的過程中都普遍存在,就像你聽不清別人的話或者覺得聽到的東西明顯不合邏輯會問一句“你說的是什么”一樣,條形碼的校驗也是起到這個作用。code39碼可以根據需要傳遞的信息生成一個檢查碼,它的計算方法是,搭配表2可以找到每個字元的編號,將查出的編號累加后再除以43,得到的余數再查出相對的編碼字元,即為檢查碼字元。
例如,要算出*S123$5*這筆資料的檢查碼,其計算過程如下:①參考檢查碼相對值對照表,找出編碼字元編號。其中,S的相對值為28;1的相對值為1;2的相對值為2;3的相對值為3;$的相對值為39;5的相對值為5。②將各相對值累加除以43,累加相對值=28+1+2+3+39+5=78可以得出78÷43=1余35。③查出與余數相對的編碼字元。余數=35,查表1和表2,得到相對值=35之編碼字元為Z,故檢查碼=Z,得含檢查碼在內的39碼,為*S123$5Z*。
通過安全校驗,如果條形碼解碼的結果和安全校驗碼不符,則可以判斷解碼失敗,就像我們在超市購物時,常常遇到的掃不出條碼的情況一樣,保證了信息傳遞過程中的安全性。校驗的步驟是發生在通信過程中的一個普遍的過程,如最常見的奇偶校驗等,在進一步的深入了解中我們會更加深入地體會到校驗的重要性。