二维码详细讲解

Posted by Aldy on 2026-03-28
Estimated Reading Time 2 Minutes
Words 667 In Total
Viewed Times

一篇文章带你搞懂有关二维码的方方面面

什么是二维码?

二维码是一种用黑白方块组成的正方形图案,通过黑白方块(1/0)存储信息,可以用手机摄像头扫描后按固定规则解码,还原出文字内容

二维码只能转化出文字吗?

是的,二维码本质上就是一串文字的编码,平常在用的,比如微信支付,加好友等等,都只是文本串的特殊格式,这不是二维码的范畴,二维码仅仅起到图片转文字的作用。

举几个例子:

  • 解码出https://…自动跳转网址(这也是支付的流程,比如https://qr.alipay.com/xxx)
  • 解码出WIFI:…自动连接WIFI

二维码是怎么被扫出来的?

  1. 捕获图像:一帧一帧地看
  2. 图像处理:转成灰度,再转成黑白
  3. 定位:看看有没有三角的"回"字方块
  4. 矫正:若有,继续处理图像,拉正
  5. 读取信息:读取二维码的信息,包含一些去除和纠错的工作
  6. 解码:得到字符串
  7. 输出:根据得到的字符串进行相应的操作

二维码是怎么生成的?

我们举一个例子,一个包含字符串"HI"的二维码
hi
可以试着扫扫。接下来就分析一下这个二维码是如何生成的

1.选择编码格式

QR标准支持四种格式(数字/字母+数字/字节/汉字),每个模式都有四位二进制标识符
这里我们使用字节模式,比较广泛。
字节模式的标识符是:0100

2.转码

按ASCII转码
H -> 01001000
I -> 01001001

3.组装数据

模式+长度+数据+终止符(0000)

所以是:

  1. 0100 (字节模式)
  2. 00000010 (长度两个)
  3. 01001000 (H)
  4. 01001001 (I)
  5. 0000 (终止符)

4.模式选择

二维码有几个版本,叫Version 1,Version 2 等等。
这里发现"HI"很短,所以选用Version 1,但是实际可能更复杂

5. 生成纠错码字

有一些算法,这里就不介绍了,总之这里的目的是让一些东西被遮挡之后也可可能扫出原来的东西

6. 填入矩阵

code
zhushi

总的来说,就是一个一个模块的填入

从右下角开始填,两列两列蛇形填入,具体看:

shexing

遇到特殊的东西就直接跳过

发现除了三个回字型,还有什么特殊的地方了吗?

时序图案

连接三个定位图案(回),用于图像的校准

shixu

结尾

二维码确实牛逼