色偷偷偷久久伊人大杳蕉,色爽交视频免费观看,欧美扒开腿做爽爽爽a片,欧美孕交alscan巨交xxx,日日碰狠狠躁久久躁蜜桃

x
x

二維碼的生成細(xì)節(jié)和原理

發(fā)布時(shí)間:2014-1-8 08:49    發(fā)布者:1770309616
關(guān)鍵詞: 二維碼
  二維碼又稱QR Code,QR全稱Quick Response,是一個(gè)近幾年來(lái)移動(dòng)設(shè)備上超流行的一種編碼方式,它比傳統(tǒng)的Bar Code條形碼能存更多的信息,也能表示更多的數(shù)據(jù)類型:比如:字符,數(shù)字,日文,中文等等。這兩天學(xué)習(xí)了一下二維碼圖片生成的相關(guān)細(xì)節(jié),覺(jué)得這個(gè)玩意就是一個(gè)密碼算法,在此寫一這篇文章,揭露一下。供好學(xué)的人一同學(xué)習(xí)之。

  關(guān)于QR Code Specification,可參看下面附件的PDF:qr_code.pdf

  基礎(chǔ)知識(shí)

  首先,我們先說(shuō)一下二維碼一共有40個(gè)尺寸。官方叫版本Version。Version1是21x21的矩陣,Version2是25x25的矩陣,Version3是29的尺寸,每增加一個(gè)version,就會(huì)增加4的尺寸,公式是:(V-1)*4+21(V是版本號(hào))最高Version40,(40-1)*4+21=177,所以最高是177x177的正方形。

  下面我們看看一個(gè)二維碼的樣例:



  定位圖案

Position Detection Pattern是定位圖案,用于標(biāo)記二維碼的矩形大小。這三個(gè)定位圖案有白邊叫Separators for Postion Detection Patterns。之所以三個(gè)而不是四個(gè)意思就是三個(gè)就可以標(biāo)識(shí)一個(gè)矩形了。

Timing Patterns也是用于定位的。原因是二維碼有40種尺寸,尺寸過(guò)大了后需要有根標(biāo)準(zhǔn)線,不然掃描的時(shí)候可能會(huì)掃歪了。

Alignment Patterns只有Version 2以上(包括Version2)的二維碼需要這個(gè)東東,同樣是為了定位用的。

  功能性數(shù)據(jù)

Format Information存在于所有的尺寸中,用于存放一些格式化數(shù)據(jù)的。

Version Information在>=Version7以上,需要預(yù)留兩塊3x6的區(qū)域存放一些版本信息。

  數(shù)據(jù)碼和糾錯(cuò)碼

除了上述的那些地方,剩下的地方存放Data Code數(shù)據(jù)碼和Error Correction Code糾錯(cuò)碼。

  數(shù)據(jù)編碼

  我們先來(lái)說(shuō)說(shuō)數(shù)據(jù)編碼。QR碼支持如下的編碼:

  Numeric mode數(shù)字編碼,從0到9。如果需要編碼的數(shù)字的個(gè)數(shù)不是3的倍數(shù),那么,最后剩下的1或2位數(shù)會(huì)被轉(zhuǎn)成4或7bits,則其它的每3位數(shù)字會(huì)被編成10,12,14bits,編成多長(zhǎng)還要看二維碼的尺寸(下面有一個(gè)表Table3說(shuō)明了這點(diǎn))

  Alphanumeric mode字符編碼。包括0-9,大寫的A到Z(沒(méi)有小寫),以及符號(hào)$ % * + – . / : 包括空格。這些字符會(huì)映射成一個(gè)字符索引表。如下所示:(其中的SP是空格,Char是字符,Value是其索引值)編碼的過(guò)程是把字符兩兩分組,然后轉(zhuǎn)成下表的45進(jìn)制,然后轉(zhuǎn)成11bits的二進(jìn)制,如果最后有一個(gè)落單的,那就轉(zhuǎn)成6bits的二進(jìn)制。而編碼模式和字符的個(gè)數(shù)需要根據(jù)不同的Version尺寸編成9,11或13個(gè)二進(jìn)制(如下表中Table3)



  Byte mode,字節(jié)編碼,可以是0-255的ISO-8859-1字符。有些二維碼的掃描器可以自動(dòng)檢測(cè)是否是UTF-8的編碼。

  Kanji mode這是日文編碼,也是雙字節(jié)編碼。同樣,也可以用于中文編碼。日文和漢字的編碼會(huì)減去一個(gè)值。如:在0X8140 to 0X9FFC中的字符會(huì)減去8140,在0XE040到0XEBBF中的字符要減去0XC140,然后把前兩位拿出來(lái)乘以0XC0,然后再加上后兩位,最后轉(zhuǎn)成13bit的編碼。如下圖示例:




  Extended Channel Interpretation (ECI) mode主要用于特殊的字符集。并不是所有的掃描器都支持這種編碼。

  Structured Append mode用于混合編碼,也就是說(shuō),這個(gè)二維碼中包含了多種編碼格式。

  FNC1 mode這種編碼方式主要是給一些特殊的工業(yè)或行業(yè)用的。比如GS1條形碼之類的。

  簡(jiǎn)單起見(jiàn),后面三種不會(huì)在本文中討論。

      詳細(xì)見(jiàn): qr_code(122頁(yè)).pdf (841.34 KB)

本文地址:http://m.54549.cn/thread-125437-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
rinllow6 發(fā)表于 2014-1-8 15:47:12
謝謝。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。!
wsnfine 發(fā)表于 2014-1-12 18:00:00
好文,下載了
bubifengyun 發(fā)表于 2014-1-21 13:05:13
感謝感謝,不錯(cuò)。
resound 發(fā)表于 2014-8-27 09:13:52
謝謝。。。。。。。。。!
trimine 發(fā)表于 2019-10-19 14:37:25
謝謝分享
hwzhou 發(fā)表于 2020-9-25 11:12:47
感謝!
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表