張廣慶,黃裔華,顧婉晴
(1.青島市標準化研究院,青島 266071;2.廣東省薄膜及設備行業(yè)協(xié)會,廣州 511363;3.遼寧工業(yè)大學,錦州 121001)
編碼在生產(chǎn)、生活中有著廣泛應用。從一個簡單的單位員工編碼到龐大復雜的大飛機物料編碼,從常見的計算機漢字編碼到農產(chǎn)品和食品的追溯編碼,編碼都起著非常重要的作用。在眾多的編碼中,如何選擇適合個人或單位實際應用的編碼方案呢?已公布的國家標準和行業(yè)標準中,有大量涉及編碼的標準,本文通過簡要分析此類標準,幫助讀者更好的借鑒、學習這些編碼知識,從而找到最佳解決方案。
編碼是一個多學科經(jīng)常使用的概念,全國科學技術名詞審定委員會公布的不同學科的定義有20種。在計算機科學中,編碼是指信息從一種形式或格式轉換成另一種形式的過程。在標準中,編碼是給事物或概念賦予代碼的過程,代碼表示特定事物或概念的一個或一組字符[1]。
據(jù)統(tǒng)計,國內已發(fā)布的國家標準和行業(yè)標準約有22萬種,在標準名稱和適用范圍中檢索“編碼”一詞,可以找到大多數(shù)的編碼類標準,類似的詞還有代碼、分類、報文。利用這一特性,在某專業(yè)標準網(wǎng)站檢索這些詞后的統(tǒng)計情況參見表1。
表1 編碼類標準數(shù)量
編碼對象指被編碼的事物或概念,通常具有某種共同屬性或特征。[1]編碼對象泛指人類社會傳播的一切內容,可以是文字、聲音、信號、產(chǎn)品、圖形圖案、標志標識等。在現(xiàn)行的450種編碼類國家標準中,最多的標準是關于語言字符集編碼的,多達135種。
編碼對象可分為文字對象和非文字對象。事物名稱是最常見的文字對象,像某個漢字、某單位名、某道路名、某書名等都是文字對象。非文字對象則包括圖形、圖像、聲音等,如電報中的電脈沖信號和商品中的條形碼符號就是非文字對象。
國際標準分類法(ICS)和中國標準文獻分類法(CCS)是標準文獻的分類方法,在研究標準中的編碼對象分類時,也可以借鑒使用這兩種分類方式。
(1)文字符號:又分為數(shù)字型、字母型、字母數(shù)字型。數(shù)字型的代碼只能是數(shù)字,如行政區(qū)劃代碼、商品條碼;字母型的代碼只能是字母,如世界各國和地區(qū)代碼中的兩字符、三字符代碼;字母數(shù)字型的代碼既有數(shù)字也有字母,如統(tǒng)一社會信用代碼和國民經(jīng)濟行業(yè)代碼。
采用文字符號的編碼對象在本文中簡稱編碼代碼。編碼代碼也包括編碼對象采用的圖形符號對應的數(shù)字和字母,這些數(shù)字和字母可以供人識讀,像一維條碼常常將條形碼和數(shù)字、字母同時印刷,以便同時滿足設備識別和人工識讀的需要。
大多數(shù)小型機和全部個人計算機都使用ASCII碼作為存儲和傳輸?shù)臄?shù)據(jù)格式,因此,文字符號也多采用ASCII碼作為編碼符號?;続SCII碼共有128個字符,由10個數(shù)字、52個英文字母、33個其它可顯示字符、33個控制字符或通信字符組成,擴充ASCII碼則可達到256個字符。
(2)圖形符號:使用圖形的編碼符號主要用于快速采集和識別,一般使用規(guī)則的圖形符號。如一維條碼使用寬度不等的多個黑線和空白表達特定信息,二維條碼使用特定的幾何圖形(如黑白相間的方格)按一定規(guī)律在平面上進行規(guī)則分布來表達信息[2]。GB/T 12905-2000 《條碼術語》規(guī)定的條碼符號類型包括一維條碼、二維條碼和特種條碼,前兩者較為常用(見表2)。
表2 常用條碼
(1)非坐標型排列:使用文字符號的編碼是非坐標型排列,一般用于計算機存儲、傳輸和處理。使用數(shù)字或字母編制代碼,與空間坐標無關。
(2)線型排列:使用特定的幾何圖形在一個方向上按照一定規(guī)則排列,如一維條碼使用黑條和空白相間的符號按照水平或垂直排列表達信息。圓形條碼則是一種特殊的線型編碼,是從一個中心點向外延伸的規(guī)則圖形。
(3)平面型排列:使用特定的幾何圖形在平面上排列表達信息,一般選擇垂直的兩個方向,如二維條碼由黑色和白色正方形組成并沿兩個方向排列。
(1)隨機結構:編碼代碼由無含義字符或者某種語言的縮略詞組成,如組織機構代碼前8位由無任何含義的數(shù)字和字母組成,世界各國和地區(qū)代碼由2位(或3位)拉丁字母或3位數(shù)字組成。
(2)分級結構:編碼代碼可以劃分成有不同含義的各段代碼,且后一段代碼的確切含義由前一段代碼來確定。如行政區(qū)劃代碼是6位數(shù)字,由3段分別表示省、市(地區(qū))、縣(區(qū))的代碼組成;國民經(jīng)濟行業(yè)代碼是5位數(shù)字或字母,分別由門類、大類、中類、小類組成。
(3)并列結構:編碼代碼由有不同含義的各段代碼組成,各段代碼的屬性或特征獨立,與前后位置無關。如居民身份證號第1-14位是14位數(shù)字,分別是行政區(qū)劃代碼、出生年月日;統(tǒng)一社會信用代碼是18位數(shù)字或字母,第3-17位分別是登記機關行政區(qū)劃代碼、組織機構代碼,都屬于并列結構。
(4)混合結構:編碼代碼由上述2種或3種結構的代碼共同組成。大多數(shù)編碼代碼是混合結構,如居民身份證號。
不同編碼結構示例見表3。
表3 采用不同編碼結構的代碼示例
大多數(shù)編碼代碼采用一套校驗字符系統(tǒng)來防止復制、鍵入或采集編碼數(shù)據(jù)時產(chǎn)生錯誤,其代碼通常由本體碼和校驗碼組成。為與標準中描述校驗算法的用語一致,下文中的“編碼代碼”與“字符”含義相同。
常用的校驗算法有奇偶校驗、海明校驗、循環(huán)冗余校驗、縱向冗余校驗、累加和校驗、加總異或校驗等。
在標準中,編碼代碼通常采用模數(shù)同余算法的校驗字符系統(tǒng),一般有兩種:一種是純系統(tǒng),所有計算階段都使用單一模數(shù);另一種是混合系統(tǒng),在計算中采用了兩個模數(shù),一個模數(shù)為偶數(shù),另一個模數(shù)比它大1。[3]模數(shù)同余算法中的常用模數(shù)參見表4。
表4 常用模數(shù)
純系統(tǒng)采用遞歸法和多項式法計算校驗碼,而混合系統(tǒng)僅能使用遞歸法計算校驗碼,不能采用多項式法。
表5 純系統(tǒng)1位校驗碼的常規(guī)計算
示例:計算代碼“0794”的1位校驗碼。計算步驟參見表6。
表6 純系統(tǒng)1位校驗碼的遞歸法計算
表7 純系統(tǒng)前15位的權
示例:計算代碼“0794”的1位校驗碼。計算步驟參見表8:
表8 純系統(tǒng)1位校驗碼的多項式法計算
關于一維條碼的相關標準均采用純系統(tǒng)多項式法計算或驗證校驗碼。
表9 混合系統(tǒng)1位校驗碼的遞歸法計算
編碼及其技術廣泛存在于編碼類標準中,大多數(shù)生產(chǎn)、生活中遇到的事物和概念都可以在標準中找到相應規(guī)范。學習、借鑒這些標準,可以有效解決各種編碼問題。校驗技術是編碼技術的重要組成部分,采用ASCII碼作為代碼的編碼都使用模數(shù)同余算法的校驗字符系統(tǒng),如日常生活中常遇到的身份證號、統(tǒng)一社會信用代碼、商品條碼等大都使用模數(shù)同余算法。
[1] GB/T 10113-2003,分類與編碼通用術語[S].
[2] GB/T 12905-2000,條碼術語[S].
[3] GB/T 17710-2008,信息技術 安全技術 校驗字符系統(tǒng)[S].