[譯]ISO/IEC 18004-2015 二維碼標(biāo)準(zhǔn)文檔(3)

書接上回兔甘,7.4.4

舉個例子(1H級別的符號)

輸入數(shù)據(jù)??? AC-42

1?? 根據(jù)表5來確定字符的具體數(shù)值 AC-42? ->?? 10,12,41,4,2

2?? 對字符數(shù)值兩兩分組??? (10,12)(41,4)(2)

3?? 按照編碼規(guī)則,轉(zhuǎn)換為11位的比特?

10,12?? 10*45+12? ->? 00111001110

41.4??? 41*45+4?? ->?? 11100111001

2?? ->?? 000010

4?? 鏈接成數(shù)據(jù)子句

00111001110 11100111001 000010

5??? 字符數(shù)量轉(zhuǎn)換為二進(jìn)制

5 → 000000101

6??? 添加模式標(biāo)示0010 至模式頭部

0010 000000101 00111001110 11100111001 000010

字母數(shù)字類別的字符与学,比特長度轉(zhuǎn)換依賴與下面的公式


B = M +C + 11(D DIV2) + 6(D MOD2)

其中?? B 是? 比特流的長度??? M? 模式標(biāo)識符的數(shù)值 (QR 標(biāo)準(zhǔn)下是2個比特含友,MICRO 標(biāo)準(zhǔn)請看表2)???? C? 字符數(shù)量的標(biāo)示數(shù)值尘喝,具體看表3??? D?? 輸入字符的真實數(shù)據(jù)



7.4.5? 字節(jié)模式

在這種模式下询一,一個8比特長度的 字直接代表一個? 字節(jié)的數(shù)值悠夯, 包括8比特密度的字符


備注1????? 在JIS8字符編碼中,具體看表H1,? 80-9F以及 E0到FF的字段沒有分配庞呕。但是卻被接受了新翎, 他們其中的一些,是作為SHIFT JIS編碼中的第一個字節(jié)了(可以參考表H2)住练,并且可能會被用于區(qū)分是 JIS8還是SHIFT JIS編碼地啰,或者是因為啟用KANJI的壓縮模式生成的。JIS X 0208 給出了換擋后的編碼的具體含義

備注2???? JIS8 編碼中的00 - 7F的數(shù)據(jù)與? ISO 8859-1以及? ISO 646 IRV格式保持一直讲逛,除了? 5C到7E之間的數(shù)值


二進(jìn)制的數(shù)據(jù)稍后會被模式標(biāo)示和字符數(shù)量標(biāo)示所前綴亏吝,字節(jié)模式在標(biāo)示在QRCODE中是四個比特,在MICRO模式中的約定參看表2盏混。 字符數(shù)量的標(biāo)示蔚鸥,在表三中被定義。字符數(shù)量的長度會被編碼為二進(jìn)制后许赃,加到模式標(biāo)示和二進(jìn)制數(shù)據(jù)子句之間止喷。


對于所以字符類型的數(shù)據(jù)字節(jié)流長度,可以通過下面的額公式計算

B = M +? C + 8D

其中? B是比特流的長度混聊,M是模式標(biāo)示的數(shù)值弹谁,QRCODE標(biāo)準(zhǔn)中其為4個比特,MICRO的約定參看表2句喜,? C 是字符數(shù)量的比特標(biāo)示预愤,參見表3??? D是輸入的字符數(shù)據(jù)長度


7.4.6 日本字模式

在SHIFT JIS系統(tǒng)中,日本字由兩個字節(jié)的組合標(biāo)示咳胃,他們的數(shù)值從JIS X 0208中變換而來植康。JIS X 0208 給出了所有編碼包含的意義,被以日本字模式輸入的字符數(shù)據(jù)會按照下面的規(guī)則展懈,會編碼為一個13字節(jié)長度的二進(jìn)制字销睁。?? 之后數(shù)據(jù)流會被加上模式標(biāo)示和數(shù)據(jù)長度的前綴。? 該模式的指示符號存崖,在QRCODE標(biāo)準(zhǔn)中是一個數(shù)字像是的4比特單位榄攀,在MICRO中的形式看表2,字符長度的標(biāo)示看表3.? 數(shù)據(jù)長度的數(shù)量會被編碼為2進(jìn)制金句,然后添加到數(shù)據(jù)流和模式標(biāo)示中間檩赢。

1?? 對于SHIFT JIS中 8140-9FFC的字符來說

??? a)?? 需要減去 8140

??? b)?? 使用C0乘以結(jié)果的最大有效字節(jié)

??? c)?? 最小有效字節(jié)加以? B步驟的結(jié)果

??? d)?? 將其轉(zhuǎn)換為一個13字節(jié)長度的比特序列

2??? 對于E040到 EBBF中的數(shù)值來說

??? a)??? 減去 C140

??? b)??? C0乘以最大有效字節(jié)

??? c)??? B步驟的結(jié)果加以最小有效字節(jié)

??? d) ? 轉(zhuǎn)換為13比特序列


舉個例子

輸入字符串??? 點? 和 茗

SHIFT JIS的對應(yīng)數(shù)值??? 935F??????? E4AA

1?? 減去8140 或者 C140??? 121F???? 236A

2?? 使用CO乘以最大有效字節(jié)????? D80?? 1A40

3?? 加上最小有效字節(jié)???? D9F???? 1AAA

4?? 進(jìn)行轉(zhuǎn)換為13比特的長度????? 0D9F ->? 0 1101 1001 1111?? 1AAA-> 1 1010 1010 1010


3?? 對于所有的字符來說

??? e)??? 在數(shù)據(jù)比特前面加上模式標(biāo)示(看表2)以及字符轉(zhuǎn)換后的二進(jìn)制長度(表中定義的比特數(shù)量)

日本字模式的數(shù)據(jù)比特長度計算公式如下

B = M +C + 13D

其中?? B是比特流的長度??? M 是模式指示符(QRCODE是四個比特,MICRO表中看表2)

C? 字符長度標(biāo)示(看表三)???? D 輸入的數(shù)據(jù)字符數(shù)據(jù)


混合模式的意思提供一個選項违寞,是一個符號里面包含多個數(shù)據(jù)序列贞瞒,如果需要的話,可以一個接一個的切換模式并且解析趁曼【或者是處于增加編碼密度的考慮。?? 指引文檔可以參見Annex J文檔挡闰,所有的片段都需要選擇74.2-7.4.6之間合適的編碼模式乒融。他們的每個片段掰盘,都是字符數(shù)量標(biāo)示緊跟在模式標(biāo)示后面的基本結(jié)構(gòu)。說明13? 解釋了這種包含數(shù)據(jù)的片段赞季。


7.4.8? FNC1 模式

7.4.8.1? 概述

在QRCode符號種愧捕,有一種符號,他們的有兩個模式符號連續(xù)使用的申钩。 他們的符號模式次绘,是來自與7.3.2 - 7.3.9以及7.4.2-7.4.7之間的定義的模式。 他們的信息編碼方式與工業(yè)和應(yīng)用所指定撒遣。 這兩個模式符號中間的數(shù)據(jù)是由不相干的參數(shù)數(shù)據(jù)有效率的編碼構(gòu)成邮偎,當(dāng)這種模式被使用的時候編碼器需要先按照14.2或者ANNEX E文檔中的約定傳輸符號的標(biāo)識符。

7.4.8.2? ?一號位置

注意义黎,這里的“一號位置”并不是位于一個連同的句子中的禾进,他是一個在func1的128字符一個歷史引用。

這個模式的指示標(biāo)識符號會根據(jù)gs1應(yīng)用標(biāo)準(zhǔn)廉涕,進(jìn)行格式化的編碼數(shù)據(jù)命迈。在這種期望下,一個符號中應(yīng)該只出現(xiàn)一次這種符號火的,并且他們應(yīng)該在當(dāng)?shù)谝粋€模式只是符號前出現(xiàn)(例如數(shù)字壶愤,字節(jié)等模式)。并且應(yīng)該在ECI和結(jié)構(gòu)勾畫添加頭之后馏鹤。當(dāng)GS1標(biāo)準(zhǔn)符號出現(xiàn)了fnc1的符號征椒,作為數(shù)據(jù)字段的表示符號,QRCODE 應(yīng)該用字符模式下的%或者GS(字節(jié)數(shù)值是1D)來表達(dá)這個符號湃累。如果在數(shù)據(jù)中也出現(xiàn)了%勃救,那么它會被編碼為%%,? 編碼器在遇到%的時候,應(yīng)該將其傳輸為ASCII/JIS8的數(shù)值1D,如果遇到%% 應(yīng)該將其傳輸為一個單獨的%

舉個例子:

輸入數(shù)據(jù):? 0104912345123459( 應(yīng)用標(biāo)識01 代表了GS1 文章符號治力,長度固定蒙秒,數(shù)據(jù)段是04912345123459)

15970331 (15的意思是 最佳截至日期,固定長度,后面的數(shù)據(jù)代表97年三月31日)

30128(30代表了質(zhì)量宵统,可變長度晕讲,數(shù)值128)(需要分隔符號)

10ABC123(10 代表了一批數(shù)字,可變長度,數(shù)值A(chǔ)BC123)

整體數(shù)據(jù)會被編碼:01049123451234591597033130128%10ABC123

符號標(biāo)記的bit:? ??

0101(FNC1的模式標(biāo)識符马澈,標(biāo)記了第一個位置)

0001(模式標(biāo)識符瓢省,意思是數(shù)字)

0000011101(字符長度標(biāo)識符,29痊班,意思是上面比特總長度)

0010(數(shù)字英文模式勤婚,標(biāo)識符)


000001001(字符長度標(biāo)識9, 上面的那段%ABC123)

傳輸后的數(shù)據(jù)(詳見14.2 AnnexF)


例子2? ?編碼和傳輸過程中%的體現(xiàn)

? ? ? ? 輸入數(shù)據(jù) 123%? ? 編碼后? 123%%? ? 傳輸數(shù)據(jù) 123%


7.4.8.3? ?FNC1的第二個位置

注意 “第二個位置”的意思并不是在一個連同的句子中的涤伐,他們是一個歷史的相對引用位置馒胆。 在FNC1模式下128個符號中的一個缨称。

這個模式的標(biāo)識指示符,是根據(jù)由基于AIM國際標(biāo)準(zhǔn)的特定工業(yè)和應(yīng)用標(biāo)準(zhǔn)的編碼格式祝迂。他會立即跟在一個1字節(jié)字后面睦尽,這個字節(jié)是由符合AIM標(biāo)準(zhǔn)的應(yīng)用程序制定的。? 在此場景下液兽,標(biāo)識符號應(yīng)該只出現(xiàn)一次,并且應(yīng)該在被模式符號之前(數(shù)字掌动,英文四啰,字節(jié),雙字節(jié)字)粗恢,并且跟在ECI 或者結(jié)構(gòu)化添加頭之后柑晒。? ? 標(biāo)識符可能是由[A-Z,a-z]中的任意單個拉丁字符組成(他們會被ASCII的數(shù)值 正100所標(biāo)識)眷射〕自蓿或者兩位數(shù)字,


兩位數(shù)字直接就代表了妖碉,他們自己的數(shù)值涌庭,此時編碼器應(yīng)該將這些字符編碼放在數(shù)據(jù)之前。當(dāng)應(yīng)用程序需要FNC1字符(這是一個約定好的特殊字符)作為一個數(shù)字段符號時應(yīng)該加上字符格式的%作為前綴欧宜,編碼格式為ASCII或者jis8的GS 在字節(jié)模式下坐榆,? 如果原本有%,則展示為%%.


7.4.9 結(jié)束符號

符號的數(shù)據(jù)部分結(jié)束時冗茸,應(yīng)該加上0bit序列作為標(biāo)識席镀。這些事情在表2中有定義。 這些比特序列會跟在最終模式片段之后夏漱。? 終止符號在處理數(shù)據(jù)時應(yīng)該被忽略,如果數(shù)據(jù)剛剛好填充滿符號豪诲。或者如果剩余空間不足比特長度終止符長度的時候挂绰,應(yīng)該縮寫屎篱。


7.4.10 比特流編碼為字

當(dāng)比特流轉(zhuǎn)換為各個模式的片段時,必須按照一定的順序進(jìn)行葵蒂。終止符號需要被添加到比特流后面芳室,就如7.4.9所描述的那樣。 然后得到的結(jié)果需要被拆分編碼為字刹勃。所有的字都應(yīng)該時8個比特長度堪侯,除了micro QR中的M1-M3.他們是四個比特長度。? 如果比特不能被8整除荔仁,那說明他們還不到一個字的邊界伍宦,應(yīng)該填充0比特知道邊界芽死。? 比特的長度應(yīng)該符合表8中對version和糾錯碼的約定,不足的地方交替填充字? 11101100和00010001。? ?對于MICRO QR M1-M3來說次洼,最終的字是四個比特長度关贵。他們填充的比特字是0000. 最終得到的比特流會按照7.5的約定添加糾錯碼信息,按照某一確定的版本卖毁。? 再之后揖曾,可能會添加 3,4,7? 剩余比特(全是0)加到糾錯信息的后面。最后得到可以完全填充容量的比特信息亥啦。







備注1? ?所有的字都是8比特炭剪,除了M1-M3版本的最后一個數(shù)據(jù)字是4比特。

備注2? ? 這里的data bit 數(shù)量 包含了模式指示符號和字符長度標(biāo)識


7.5? 糾錯信息

7.5.1? 糾錯信息容量

QR CODE使用了里德所羅門算法來識別和糾正錯誤信息翔脱。會有一系列糾錯碼數(shù)據(jù)字被生成出來奴拦,添加到數(shù)據(jù)的后面用來讓符號在數(shù)據(jù)丟失或損壞得情況下,依然可以使用届吁。? 表8中定義了四種可以選擇得糾錯碼級別错妖,他們可以讓恢復(fù)指定數(shù)量得容量。

AnnerK.2給出了如何選擇一個適用得糾錯碼級別疚沐,應(yīng)用于圖像暂氯。

Micro QR不支持H級別

糾錯字可以糾正兩種類型得情況,第一種時失去得字?jǐn)?shù)據(jù)(明確位置信息亮蛔,但是信息字節(jié)錯誤)第二種時錯誤信息(未知位置信息株旷,錯誤得信息字)? ?遺失得意思時,無法掃描或者無法解碼尔邓,錯誤得意思時解析失敗的符號字符晾剖。因為二維碼時一種矩陣技術(shù),所以如果某個模塊 黑色被當(dāng)成了白色梯嗽,或者白色被當(dāng)成了黑色齿尽,都可以被識別為一個錯誤標(biāo)識得內(nèi)容。這樣得一個錯誤灯节,需要兩個糾錯碼才能糾正它循头。


可以被就錯了得遺失或者錯誤 的模點遵循下面的公式:

e + 2t <= d- p

e? ?是遺失的模點數(shù)量? ? ?t 是錯誤的模點數(shù)量? ?d? 是糾錯碼數(shù)量? ? p 是被錯誤解析的保護(hù)字節(jié)(譯者注:錯誤而非遺失)

一般情況下,p 是0炎疆,但是如果大部分的糾錯碼容量就去用于處理遺忘模點卡骂,然后可能會導(dǎo)致沒有發(fā)現(xiàn)的錯誤增加。不論何時形入,當(dāng)遺失模點的數(shù)量超過糾錯碼一般的時候全跨,p =3。? 對于小于8個糾錯碼字的小符號來說亿遂,遺忘糾錯不應(yīng)被使用(e = 0 并且 p > 0)

舉個例子 在版本6H符號來說浓若,數(shù)據(jù)容量尺寸是172渺杉,112是糾錯碼字,剩下60個純粹的數(shù)據(jù)字挪钓。112個數(shù)據(jù)糾錯碼是越,可以糾正56個錯誤字.(解析錯誤,或者移位錯誤)? 換句話說 56/172? 也就是32.6%的符號容量

套用上面講過的公式碌上,那么下列數(shù)值將會用于定義p


p =3? ?在1-L 或者M(jìn)2-L 上

p= 2? 在1-M,2-L,M1,M2-M,M3-L,M4-L

p = 1? 1-Q,1-H,3-L

p =0 其他情況

當(dāng) p > 0的時候倚评,換句話說(1,2馏予,3)天梧。 此時p字節(jié)扮演了錯誤碼搜集的功能,并且用于組織當(dāng)錯誤的數(shù)量超過限制之后吗蚌,繼續(xù)傳輸數(shù)據(jù)的作用腿倚。e 必須小于 1/2的d纯出,舉個例子再2L 版本中蚯妇,一共有44個字長,其中34個是是數(shù)據(jù)字暂筝,還有十個是糾錯碼箩言。從表9中可以看到它的錯誤容量是4(e = 0),套用上面的公式:

0 + 2 * 4 = 10 - 2;

它的意思是糾正四個錯誤焕襟,只需要8個錯誤矯正符號陨收。剩下的兩個可以用來檢測(僅僅是檢測,而不是修正)額外的錯誤鸵赖。如果超過四個錯誤务漩,那么解析失敗。

根據(jù)不同的版本和糾錯碼級別它褪,數(shù)據(jù)比特需要被拆分不同的模塊中饵骨,用以分割各自的糾錯算法。在表9中有定義所有的版本茫打,糾錯碼的整體字?jǐn)?shù)居触,糾錯碼字?jǐn)?shù),以及糾錯碼塊的數(shù)量和結(jié)構(gòu)老赤。

如果需要填充剩余位置轮洋,請使用Bit0填充。




table9太長了抬旺。換篇文章再聊弊予。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市开财,隨后出現(xiàn)的幾起案子块促,更是在濱河造成了極大的恐慌荣堰,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竭翠,死亡現(xiàn)場離奇詭異振坚,居然都是意外死亡,警方通過查閱死者的電腦和手機斋扰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門渡八,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人传货,你說我怎么就攤上這事屎鳍。” “怎么了问裕?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵逮壁,是天一觀的道長。 經(jīng)常有香客問我粮宛,道長窥淆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任巍杈,我火速辦了婚禮忧饭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘筷畦。我一直安慰自己词裤,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布鳖宾。 她就那樣靜靜地躺著吼砂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鼎文。 梳的紋絲不亂的頭發(fā)上渔肩,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機與錄音漂问,去河邊找鬼赖瞒。 笑死,一個胖子當(dāng)著我的面吹牛蚤假,可吹牛的內(nèi)容都是我干的栏饮。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼磷仰,長吁一口氣:“原來是場噩夢啊……” “哼袍嬉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤伺通,失蹤者是張志新(化名)和其女友劉穎箍土,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罐监,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡吴藻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了弓柱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沟堡。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖矢空,靈堂內(nèi)的尸體忽然破棺而出航罗,到底是詐尸還是另有隱情,我是刑警寧澤屁药,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布粥血,位于F島的核電站,受9級特大地震影響酿箭,放射性物質(zhì)發(fā)生泄漏复亏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一七问、第九天 我趴在偏房一處隱蔽的房頂上張望蜓耻。 院中可真熱鬧茫舶,春花似錦械巡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疹启,卻和暖如春古程,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背喊崖。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工挣磨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荤懂。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓茁裙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親节仿。 傳聞我的和親對象是個殘疾皇子晤锥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 上回書咱們說道,第六章,下面從第七章開始繼續(xù) 7 環(huán)境需求 7.1 編碼流程概覽 下面...
    三眼卡夫卡a閱讀 3,170評論 0 4
  • 蘇州矾瘾,典型的江南水鄉(xiāng)女轿,這里平江路的幽、金雞湖的雅壕翩、太湖的醉蛉迹、山塘街的漾、同里的清放妈、重元寺的渺婿禽、拙政園的靈 ,一個令...
    改變世界的茶閱讀 582評論 0 1
  • 幾回夜下坐聽曲大猛,同在一晚相見難扭倾。 似此星辰非昨夜,姻緣已定念成疾挽绩。 只羨過往人身伴膛壹,雖此一時異地戀。 我愿情長如白...
    盧盧設(shè)計師閱讀 183評論 0 1
  • 確認(rèn)過眼神唉堪,是買不起的房模聋。
    初大大閱讀 176評論 0 0
  • 風(fēng)把圍巾帶來暖了行人的脖子 雪的影子在天空徘徊趕走了南去的雁子 太陽像男中音的歌喉磁性通透卻燃不起場子 只有你眼里...
    王淺文閱讀 481評論 12 18