二维码的原理
大家好我是狗蛋
不知不覺(jué)中,我們的生活到處充滿了二維碼。登錄賬戶需要二維碼;加好友需要二維碼;共享單車需要二維碼;商品包裝上也有二維碼;甚至連樓下賣水果的阿姨手里都拿張二維碼收款。那么,有沒(méi)有想過(guò)這個(gè)二維碼到底是什么東西呢?那么這個(gè)二維碼的圖案會(huì)不會(huì)多到不小心重合了呢?今天我來(lái)揭開(kāi)二維碼神秘的面紗。
二維碼又稱QR Code,QR全稱Quick Response,是一個(gè)近幾年來(lái)移動(dòng)設(shè)備上超流行的一種編碼方式,它比傳統(tǒng)的Bar Code條形碼能存更多的信息,也能表示更多的數(shù)據(jù)類型:比如:字符,數(shù)字,日文,中文等等。
QR碼的特點(diǎn)
1.存儲(chǔ)大容量信息
傳統(tǒng)的條形碼只能處理20位左右的信息量,與此相比,QR碼可處理?xiàng)l形碼的幾十倍到幾百倍的信息量。另外,QR碼還可以支持所有類型的數(shù)據(jù)。(如:數(shù)字、英文字母、日文字母、漢字、符號(hào)、二進(jìn)制、控制碼等)。一個(gè)QR碼最多可以處理7089字(僅用數(shù)字時(shí))的巨大信息量。
2.在小空間內(nèi)打印
QR碼使用縱向和橫向兩個(gè)方向處理數(shù)據(jù),如果是相同的信息量,QR碼所占空間為條形碼的十分之一左右。(還支持Micro QR碼,可以在更小空間內(nèi)處理數(shù)據(jù)。)
3.有效表現(xiàn)各種字母
QR碼是日本國(guó)產(chǎn)的二維碼,因此非常適合處理日文字母和漢字。QR碼字集規(guī)格定義是按照日本標(biāo)準(zhǔn)“JIS第一級(jí)和第二級(jí)的漢字”制定的,因此在日語(yǔ)處理方面,每一個(gè)全角字母和漢字都用13比特的數(shù)據(jù)處理,效率較高,與其他二維碼相比,可以多存儲(chǔ)20%以上的信息。
4.對(duì)變臟和破損的適應(yīng)能力強(qiáng)
QR碼具備“糾錯(cuò)功能”,即使部分編碼變臟或破損,也可以恢復(fù)數(shù)據(jù)。數(shù)據(jù)恢復(fù)以碼字為單位(是組成內(nèi)部數(shù)據(jù)的單位,在QR碼的情況下,每8比特代表1碼字),最多可以糾錯(cuò)約30%(根據(jù)變臟和破損程度的不同,也存在無(wú)法恢復(fù)的情況)。
5.可以從任意方向讀取
QR碼從360°任一方向均可快速讀取。其奧秘就在于QR碼中的3處定位圖案,可以幫助QR碼不受背景樣式的影響,實(shí)現(xiàn)快速穩(wěn)定的讀取。
6.支持?jǐn)?shù)據(jù)合并功能
QR碼可以將數(shù)據(jù)分割為多個(gè)編碼,最多支持16個(gè)QR碼。使用這一功能,還可以在狹長(zhǎng)區(qū)域內(nèi)打印QR碼。另外,也可以把多個(gè)分割編碼合并為單個(gè)數(shù)據(jù)。
以上就是二維碼的基本信息
接下來(lái)我們講如何實(shí)現(xiàn)掃描信息
先來(lái)看一張圖
這是劃時(shí)代意義的“二進(jìn)制”。二進(jìn)制由0和1組成,二進(jìn)制的過(guò)程也被稱為編碼過(guò)程,它可以將數(shù)字、字母等字符轉(zhuǎn)換成由0和1組成的數(shù)字集合。比如,百度的網(wǎng)址 “www.baidu.com ” 轉(zhuǎn)換成二進(jìn)制后如下所示:
如果,此時(shí)“0”對(duì)應(yīng)白色方塊、“1”對(duì)應(yīng)黑色方塊的話,就會(huì)出現(xiàn)許多大大小小黑白方塊。最后把這些方塊填入一個(gè)大的正方形內(nèi),就形成了? 二維碼圖案了
不知道,大家有沒(méi)有好奇,為什么所有的二維碼的邊角都有三個(gè)大的黑色方塊這個(gè)就是二維碼的定位
手機(jī)定位之后呢就要先了解二維碼的大概情況,所以我們看到大方塊周圍紅色線條就包含了
二維碼的信息,以及數(shù)據(jù)編碼的信息。
二維碼識(shí)別的區(qū)域就這么大而且是從右下角開(kāi)始的。
有的小伙伴就問(wèn)了為什么二維碼被遮擋了還能繼續(xù)呢?這里就不得不說(shuō)QR碼具備“糾錯(cuò)功能”我們來(lái)看一張圖片
綠色的部分是二維碼存儲(chǔ)數(shù)據(jù)的,橙色的是二維碼糾錯(cuò)功能,那么我們可以理解為糾錯(cuò)就是二維碼的備份區(qū)域所以二維碼被遮擋了還能識(shí)別,生活中有的二維碼被遮擋了一點(diǎn)就掃不出來(lái),而有的就遮擋了一點(diǎn)就可以識(shí)別出來(lái)這是為什么呢?是因?yàn)槎S碼有容錯(cuò)率的,最高可高達(dá)30%。如果二維碼容錯(cuò)率高即使被遮擋的部分大依舊可以掃出來(lái)。
好了到這里文章就結(jié)束了,大家是不是對(duì)二維碼有了一個(gè)新認(rèn)識(shí)后面我會(huì)更新其他的計(jì)算機(jī)小知識(shí)
歡迎大家訪問(wèn)我的網(wǎng)站 項(xiàng)目分享博客
總結(jié)
- 上一篇: tostring、(string)和 S
- 下一篇: 颓废的三天