1.二维码基础原理
二维码生成原理及解析代码_二维码算法及原理-CSDN博客
2. 关于字符容纳的分辨
2.1 数字编码(Numeric Mode)
数字编码的范围为 0~9。
对于数字编码,统计需要编码数字的个数是否为 3 的倍数:如果不是 3 的倍数,则剩下的 1 位或 2 位会被转为 4bits 或 8bits(十进制转二进制),每三位数字都会被编成 10bits, 12bits, 14bits,具体编码长度仍然需要二维码尺寸决定。
2.2 字符编码(Alphanumeric Mode)
字符编码的范围有:
- 数字 0~9;
- 大写 A~Z(无小写);
- 几个符号$ % * + - . / 和空格。
图中 Char 表示字符,Value 表示字符对应的索引值。
索引表中共 45 种对应关系,字符编码的过程,就是将每两个字符分为一组,然后转成上图 2.3 的 45 进制,再转为 11bits 的二进制结果。对于落单的一个字符,则转为 6bits 的二进制结果。
此外,根据上图 2.2 的设定,对不同 Version 的二维码使用 9/11/13 个二进制表示。
注:
上图 2.3 中的 SP 代表空格。
2.2.3 字节编码(Byte Mode)
可以是 0-255 的 ISO-8859-1 字符。有些二维码的扫描器可以自动检测是否是 UTF-8 的编码。
3. 二维码不同version对应的不同最大容纳字符数
qrcode共有40个版本,支持各种类型数据。个人一般统一转换成8位字节进行算法存储。(汉字 --uff8占用3个字节)
学习ASCII码详解 - 知乎 (zhihu.com)
Ascll完整码表(256个)_ascll码表-CSDN博客(包含扩展ascII)
在这里,可以简单考虑一下每种编码方式的区别asc的7位表示128个字符,8位编码标准,如ISO-8859和Unicode。UTF-8编码使用1到4个字节来表示不同的字符。对于ASCII字符(0-127),UTF-8编码使用单个字节与ASCII码完全兼容。对于非ASCII字符,UTF-8使用多个字节来表示对于包含汉字等非ASCII字符的文本,可以使用UTF-8编码将其转换为字节序列,每个汉字通常占用3个字节。
qrcode各版本/各类型容量支持表_二维码的版本与容量_squallonline8708的博客-CSDN博客
QR code各模式的数据容量_qrcode mode-CSDN博客
二维码(QRcode)容量的计算_21*21二维码能包含多少个字符-CSDN博客
4. 辨识二维码的容错率方法
12位,12全黑为L 7%,1黑2白为M 15%, 1白2黑为Q 25%, 12全白为H 30%
如何一眼看出二维码的纠错等级_潇潇-商业新知 (shangyexinzhi.com)
QR 二维码纠错码(三)-腾讯云开发者社区-腾讯云 (tencent.com)
5. 可信二维码
基于数字签名的可信二维码生成与认证方案研究 - 中国知网 (cnki.net)
每天都扫的二维码,你知道它的技术原理吗? - 掘金 (juejin.cn)
你知道什么是动态二维码吗? - 知乎 (zhihu.com)
揭秘共享单车背后的物联网技术 - 知乎 (zhihu.com)
字节二面:请你聊聊二维码登录原理 - 知乎 (zhihu.com)
6. flutter二维码使用指南
Flutter之实现生成二维码,扫描二维码——Flutter基础系列_flutter 二维码生成-CSDN博客