CODE128不同編碼方式之間的混合編碼


眾所周知,CODE128碼廣泛用於企業內部、物流系統之中,然而,對於該類條碼,卻又有着不同種類的細分(主要分為以下四種:code128A,code128B,code128C,ean128)。

  

  主要區別如下:

    code128A:標准數字和大寫字母,控制符,特殊字符

    code128B:標准數字和大寫字母,小寫字母,特殊字符

    code128C / ean128:[00]-[99]的數字對集合,共100個

  其中,code128C / ean128 因其內部算法從而決定了只能對偶數位的數字進行編碼(兩者區別:ean128在起始位后多了一個標識位,並參與最終校驗位的計算)

 

所以對於編碼方式的選擇,便因使用場景不同而不同。

對於字符串,尤其是純數字的編碼,如果是偶數位,毫無疑問,選擇 code128C / ean128 便是一種最優的編碼方式,但若為奇數位,那么該如何選擇呢?

由於code128A與cede128B均為按位編碼,所以選擇這兩種自然無可厚非,可也正是因為是按位編碼,整體長度便成了該碼制的一大短板。幸運的是,在code128碼制下,是支持內部碼制混編的,也就是說,我們可以采取先使用ean128,再使用code128A的形式,將該數字串的編碼長度縮為最短。那么,該如何進行混合操作呢?

 

下面我們以123456789為例,進行簡單解釋:

對該字符串,我們可以將其拆分為:12,34,56,78,9  這五個部分,對於前四個,以正常的ean128對其進行編碼

   

   起始位  標識符  字符1  字符2  字符3  字符4  特殊控制碼  字符5  校驗位  終止位
 編碼 StartC FNC1 12 34 56 78 StartA 9   STOP
 ID 105 102 12 34
56
78 101
 25  76 106

 

 

 

 

經查詢編碼對照表可知各個編碼的ID如下(紅色表示)

計算校驗位(藍色表示):(105*1+102*2+12*3+34*4+56*5+78*6+101*7+25*8)%103=76

  注:須將特殊控制碼一並計入計算序列,方可得到正確的校驗位!

現在所有編碼元素的id均已獲取,便可根據ID從編碼對照表中獲取對應的BandCode值,從而生成正確可識別的條碼。

其實,對於混合編碼,最重要的一點便是對於校驗位的計算,這里提到的計算方法,是經過實際測試通過並運行的。

 

 

鑄劍團隊簽名:

【總監】十二春秋之,3483099@qq.com

【Master】戈稻不蒼,han169@126.com

【Java開發】雨鷥,343691194@qq.com;思齊駿惠,qiangzhang1227@163.com;小王子,545106057@qq.com;巡山小鑽風,840260821@qq.com

【VS開發】豆點,2268800211@qq.com

【系統測試】土鏡問道,847071279@qq.com;塵子與自由,695187655@qq.com

【大數據】沙漠綠洲,caozhipan@126.com;張三省,570417591@qq.com

【網絡】夜孤星,11297761@qq.com

【系統運營】三石頭,261453882@qq.com;平凡怪咖,591169003@qq.com

【容災備份】秋天的雨,18568921@qq.com

【安全】保密,你懂的。

原創作者:豆點

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM