近些年来,随着智能手机的普及,二维码在越来越多的领域被应用,我们每天都可能会用二维码支付,用二维码加好友,用二维码传递着各种各样的信息。这由一个个小方块组成的二维码为什么可以隐藏这么多的信息在其中。要了解二维码,我们先要知道什么是二维码。二维码又称QR Code,是用某种特定的几何图形按照一定规律在平面上分布黑白相间的图形记录数据信息的编码,它比传统的条形码能存储更多的信息,也可以表达更多的数据类型。


下图中两个二维码应该是我们最常见的两种二维码,但实际上除了这两种二维码,我们的二维码还有着许多不同的版本。从最小的21X21到最大的177X177的,一共有40个版本,这40个版本的二维码,除了体积不一样之外,它们的关键区别在于,版本越高,二维码可以储存的信息越多。那么这些黑白相间的小方块是如何存储信息的呢?


二维码的原理其实与计算机是怎么识别0和1的原理相似。通过二进制,假设一个白的小方块代表“0”,一个黑色的小方块代表“1”,这时我们规定一个表格出来,当01000001代表字母A时,用二维码来表示的话就是白方块、黑方块、五个白方块、黑方块,然后我们用手机一扫描,这些小方块被转换成0和1,再对照编码表,就会显示出二维码要告诉我们的信息是A。


当然,上面只是简略的说一下二维码存储信息的原理。在实际使用过程中,我们扫二维码时,手机首先是定位二维码的位置,二维码上左上、右上、左下位置那三个大方块,就是用来定位的。不过,除了这三个大方块,有些二维码还会有虚线和稍微小一点的方块,这也是用来定位的。我们的手机定位完之后,就要先分析这个二维码的大概情况,所以在大方块的周围区域,就会包含二维码的版本和数据编码之类的信息,然后剩下的区域就是存储数据额区域。但有时在我们扫码的过程中,遇到提示二维码被阻挡或缺失一部分时也不影响我们扫码的情况,这是为什么呢?


原因就是在存储数据的区域里,它是分成两部分的,一部分是二维码需要存储的数据,另一部分是用来纠错的,这个纠错的我们就可以理解成是备份区域,所以即使有些二维码被遮挡住了一部分,也不会影响识别。但是不同的二维码有着不同的容错的等级,总共四个等级,容错等级越高的二维码,允许被遮挡的区域就越大,最高等级的二维码容错率可达到40%。不过容错等级越大的二维码,就代表着备份区域越大,它所能存储数据的区域就相应的越小。


最后,在日常的生活中,我们已经见过了许许多多的二维码,为什么这些二维码小方块的分布都比较均匀,没出现过某一块是全黑或者全白的呢?这个是因为在生成二维码的过程中,为了避免出现大面积的白块或黑块导致扫码识别不了,所以要进行掩码的操作。二维码经过计算后,会在上面这八个款式里选择一个进行处理,处理完后二维码的小方块分布才会变得均匀。


在现如今,二维码的安全性也在受到挑战,带有恶意软件或病毒的二维码也在广泛传播,防范二维码的滥用也在成为一个急需解决的问题。所以希望大家以后在扫描二维码的时候一定要小心谨慎!

为什么二维码这么神奇,扫一下就能得到各种各样的信息?相关推荐

  1. 微信生成带参数的二维码,合成海报,扫码后推送小程序?

    微信服务号渠道二维码功能,支持生成带参数二维码,合成海报二维码,微信扫码后推送内容:结合微号帮平台48小时信息推送,推送微信小程序. 带参二维码 海报二维码 微信扫码后回复 48小时信息推送 在微号帮 ...

  2. 二维码和app扫码下载

    文章目录 二维码基本原理 二级码生成 在线二维码生成 java代码生成二维码 前端二维码生成 app扫码下载 二维码基本原理 参考: https://cli.im/help/48235 二维条码是指在 ...

  3. vue前端生成二维码,实现扫码下载功能

    vue前端生成二维码,实现扫码下载功能 首先需要安装一个插件 npm install --save qrcodejs2 然后在需要的页面引入插件,最后使用 <template><di ...

  4. uni-app二维码、条形码扫码自定义

    uni-app二维码.条形码扫码自定义 - DCloud问答 https://github.com/xiaowang1314/uniapp-plugin-collections/blob/master ...

  5. wechat-0050,微信公众号,带参数的二维码获取与扫码事件推送

    demo:https://github.com/wenrongyao/wechat-demo 摘要:这篇帖子讲述如何获取带参数的二维码,以及扫码带参数的二维码后的事件接收. 微信开发者文档:https ...

  6. 怎么把视频生成二维码?微信扫二维码就可以观看?不要广告的

    发布时间:2019-7-30 原创内容:阿酷 怎么把视频生成二维码?微信扫二维码就可以观看?不要广告的 如今,二维码的应用越来越广了,也非常方便,那么如何把视频转换生成二维码呢?网页地址转换二维码的工 ...

  7. 餐饮二维码案例: 扫二维码监督后厨卫生状况

    清华大学中国经济社会数据研究中心与腾讯联合发布的<2020码上经济战疫报告>显示,2020年第一季度,"码"上经济交易额同比增加25.86%,1月23日至5月6日,政企 ...

  8. Android二维码名片生成扫码识别

    功能描述: 填入联系人信息,动态生成二维码名片,长按二维码保存,打开扫码识别内容.app实现了在android6.0或以上动态权限申请功能,适合新手研究.搭建方法请看入门教程菜单中的androidst ...

  9. 高保真原型、动画引导、用户登录、巡检任务、维保任务、用户中心、历史记录、帮助中心、清除缓存、任务抽检、扫描二维码、待办事项、账号设置、客服信息、交互说明、手机端、小程序、app原型、BIM信息综合管理

    手机端(微信小程序)高仿真原型.动画引导.用户登录.巡检任务.维保任务.用户中心.历史记录.帮助中心.清除缓存.任务抽检.扫描二维码.待办事项.账号设置.客服信息.交互说明.手机端.小程序.app原型 ...

最新文章

  1. 三天竟然爆发两起大漏洞事件!我们来教你如何跳过以太坊的坑
  2. 运动会成绩管理系统python_Python 实现简易版成绩管理系统
  3. C#输入框InputBox问题
  4. Bootstrap补充
  5. python安装依赖比较慢的解决方法
  6. 【AngularJS】—— 3 我的第一个AngularJS小程序
  7. vba实现粘贴复制功能
  8. SPECTRUM发布6种新型AWG任意波形发生器
  9. OpenCV python 绘制椭圆形
  10. Pycharm下载安装 以及配置python环境变量
  11. laravel框架生產vender文件夹
  12. centos上升级node_如何升级nodejs到最新版本
  13. 开发EduSoho v8.7.10 本地播放视频超时或者快进后网络错误导致视频下载中途失败。鉴权播放次数问题
  14. 见过用turtle画表情包的吗!
  15. 杜笙除镍树脂Tulsimer CH-90实际运用案例
  16. 码农的跑步里程碑5000公里
  17. DDL,DML,DCL
  18. HTML中上传与读取图片或文件(input file)----在路上(25)
  19. 迅为RK3568开发板Linux_NVR_SDK系统开发-查看NPU/GPU/CPU频率使用率
  20. 二相四线步进电机的一种四拍驱动时序

热门文章

  1. 致远互联携手华为云启动开发者大赛,加速企业应用定制向平台生态转型
  2. 性能 1.84 倍于 Ceph!网易数帆开源分布式存储系统 Curve
  3. Python 玩出花了!一文教你用 Python 制作吃豆人游戏! | 附代码
  4. “编程能力差,90%输在了数学上!”骨灰级开发:其实你们都是瞎努力!!
  5. 美团十年,支撑全球最大规模外卖配送的一站式机器学习平台是如何炼成的?...
  6. 瑞典抢发区块链数字货币 E-Krona!
  7. 9 位 IEEE Fellow 确认出席 2019 嵌入式智能国际大会!
  8. 程序员如何通过 Git 来更好地提交消息?
  9. 深入理解 Linux 内存机制!| 技术头条
  10. GitHub Package Registry 发布!你依旧是那个我们所爱的 GitHub!