一直都对二维码有很强烈的兴趣,除了以为方便快捷和安全之外,不知道为何二维码为何这么受欢迎;因此特意来学习一下二维码的相关知识。html
http://coolshell.cn/articles/10590.html#jtss-tsina算法
http://suflow.iteye.com/blog/1100678shell
简单地归纳一下就是:为了生成一个二维码,也就是称为Quick Response Code,简称为QR Code.安全
英文就是有不少缩写的东西要记住。布局
而后分了不少步骤教了一堆知识:post
一个这样的框
说到底仍是一个图,而后就是各类表示位置、数据、版本的布局咯,想一想也没其它的东西须要了。学习
至于这样的一个QR Code固然有大小:一共有40个尺寸,最小的尺寸从21x21,之后每一个尺寸只须要从前一个变长增长4就行了,balabala。。。学过数列都知道最大的是177x177的咯。ui
说了一堆的二维码如今支持的编码,由于谁也不知道之后支持多少编码,嘻嘻。编码
不就是中文编码么!!code
(如下是说着玩的)
怎么样看着有什么感受?晕不?不晕。好的后面还有,嘻嘻!
开始事例:
说清楚版本(version),和纠错级别(这是开玩笑的吧),来作出相应的操做。
而后就是说要把01234567这数字分组
-> 转成01串(二进制)
-> 串起来(搞烧烤呢!!!)
-> 把这些数的总个数8也用10个二进位的来表示往串起来的01串的前面串上
-> 多是嫌弃花样不够,还要在前面加上后接字符数的01串的编码01串
-> 还不够好看,在串后面加上结束01串。(还真会吃。)
-> 可能以为串这样很差,因此规定全部01必须是8的倍数。(否则美感不够,好吧!真会吃)
-> 而后,(还有而后) 惧怕不够吃因此必定要把竹签给串满了,不够就日后面继续加11101100 00010001这两个串。(我服)
级别 | 错误修正容量 |
---|---|
L水平 | 7%的字码可被修正 |
M水平 | 15%的字码可被修正 |
Q水平 | 25%的字码可被修正 |
H水平 | 30%的字码可被修正 |
这小串是什么鬼?
为了让看上去高大上一些,还给出了表格:而这个表格是由Reed-Solomon error correction(里德-所罗门纠错算法)得出。
组 | 块 | 数据 | 对每一个块的纠错码 |
---|---|---|---|
1 | 1 | 67 85 70 134 87 38 85 194 119 50 6 18 6 103 38 | 213 199 11 45 115 247 241 223 229 248 154 117 154 111 86 161 111 39 |
2 | 246 246 66 7 118 134 242 7 38 86 22 198 199 146 6 | 87 204 96 60 202 182 124 157 200 134 27 129 209 17 163 163 120 133 | |
2 | 1 | 182 230 247 119 50 7 118 134 87 38 82 6 134 151 50 7 | 148 116 177 212 76 133 75 242 238 76 195 230 189 10 108 240 192 141 |
2 | 70 247 118 86 194 6 151 50 16 236 17 236 17 236 17 236 | 235 159 5 173 24 147 59 33 106 40 255 172 82 2 131 32 178 236 |
二维码的混乱技术尚未玩完,它还要把数据码和纠错码的各个codewords交替放在一块儿。如何交替呢,规则:对于数据码:把每一个块的第一个codewords先拿出来按顺度排列好,而后再取第一块的第二个,如此类推。
。。。
不想再吐槽,结果就是这样的:这就是咱们的最终一个长串的样子了。竟然又全串起来了,这火星人的思惟果真不是这么好理解的。
67, 246, 182, 70, 85, 246, 230, 247, 70, 66, 247, 118, 134, 7, 119, 86, 87, 118, 50, 194, 38, 134, 7, 6, 85, 242, 118, 151, 194, 7, 134, 50, 119, 38, 87, 16, 50, 86, 38, 236, 6, 22, 82, 17, 18, 198, 6, 236, 6, 199, 134, 17, 103, 146, 151, 236, 38, 6, 50, 17, 7, 236, 213, 87, 148, 235, 199, 204, 116, 159, 11, 96, 177, 5, 45, 60, 212, 173, 115, 202, 76, 24, 247, 182, 133, 147, 241, 124, 75, 59, 223, 157, 242, 33, 229, 200, 238, 106, 248, 134, 76, 40, 154, 27, 195, 255, 117, 129, 230, 172, 154, 209, 189, 82, 111, 17, 10, 2, 86, 163, 108, 131, 161, 163, 240, 32, 111, 120, 192, 178, 39, 133, 141, 236
而后是填接咱们的最终编码,最终编码的填充方式以下:从左下角开始沿着红线填咱们的各个bits,1是黑色,0是白色。若是遇到了上面的非数据区,则绕开或跳过。
操做就是和下面的图片中的东西作一下最后的烘烤(xor)。
终于把这个二维码给学懂了,不知道的时候好复杂,学完以后感受也不是很难的样子。也许这就是:
世上无难事只怕有心人。
只要好好学也不是学不会,毕竟知识都是用来学习也应用的,只是不一样的知识对咱们来讲接受的能力不同,可是并不表明学不会,只是可能会多绕几个弯,多话点时间。不气馁,老是能学到想学的知识技能的,嘻嘻。