全站首页设为首页收藏本站

西虹市网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

社区广播台

    查看: 31|回复: 6
    打印 上一主题 下一主题

    [西虹小吃] 分析:二维码的实现原理和实现过程[数据码编码]

    [复制链接]
    跳转到指定楼层
    楼主
    发表于 2023-9-19 12:36:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    西虹网 西虹网  ? ? ? ?在阅读这篇文章前,你需要具备一定的编程能力。二维码https://www.erweicaihong.cn/二维彩虹提供专业的二维码在线生成和美化。在线生成器可把文本、电子邮件、名片、网址、微信收款等信息一键制作自定义动态二维码图片,不仅能够随时让用户更改二维码背后的信息而无需更改二维码,而且能够让用户追踪最有价值的市场数据!
    西虹网 西虹网

    西虹网 西虹网
    西虹网 西虹网  ? ? ? ?数据码编码,就是将二维码存储的字符转化成二进制。 这些字符可以是数字、字母、中文。 那么数据码编码时,就根据数字模式,数字字母模式,8位字节模式,中文模式进行编码。 8位字节模式可以描述整个计算机世界的字符,而其他模式是量身打造的,所以所需字节比8位字节模式要少。
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ?该教程目前只实现了数字模式和8位字节模式的编码规范。
    西虹网 西虹网
    西虹网 西虹网  图1 数据码编码流程图表1 模式指示符
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ? 模式指示符在数据码字中占4位,是每个数据码字的第一部分。
    西虹网 西虹网
    西虹网 西虹网  表2 字符计数指示符
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ?字符计数指示符的位数在数据码字中根据版本和编码模式而有所不同,它计算的是模式编码时,源字符的长度。例如:对"qrcode"进行编码,那么所获得的源字符长度是6,如果编码模式选择的是字母数字模式,版本选择的是1,那么对应的该字符计数指示符的位数是9,而6在二进制中是"110",那么该字符计数指示符是"000000110"。
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ?例1:将"01234567"进行编码,首先要对这些数字进行分割。分割成 012 345 67的形式,即将源字符(纯数字),如果字符长度满足3的倍数,那么正好可以分割成3n的序列形式。但是如果不满足3的倍数,那么就可以用3n+1和3n+2的序列形式来表示。所以示例中是一个标准的3n+2序列形式。
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ?在二进制中想要表示这些数字,3位的十进制数字,最大为999,二进制中2的10次方[1024]可以涵盖这些数字,2位的十进制数字,最大为99,二进制中2的7次方[128]可以涵盖这些数字,1位的十进制数字,最大为9,二进制中2的4次方[16]可以涵盖这些数字。
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ?例1:将"01234567"进行编码:
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ?012->0000001100
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ?345->0101011001
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ?67->1000011
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ?例2:将"0125"进行编码:
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ?012->0000001100
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ?5->0101
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ? ?8位字节编码即依据ASCII编码表进行编码。如果你想用8位字节表示中文,那么可以根据GB2312或UTF-8来对中文字符进行处理,具体的GB2312处理方式:
    西虹网 西虹网
    西虹网 西虹网  c++ GB2312编码规则
    西虹网 西虹网
    西虹网 西虹网  ? ? 以此,可以对照GB2312编码表对中文向8位字节流转换。
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ? 我们有义务标识数据码已经结束,并且应该根据二维码定义的数据码长度巧妙得告诉数据码结束了。
    西虹网 西虹网
    西虹网 西虹网  ?结束指示符:"0000",如果剩余位不足4位,填充满0。
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ?我们有义务将数据码补充成完整的8位字节。
    西虹网 西虹网
    西虹网 西虹网  ?根据数据码[模式指示符+字符计数指示符+模式编码+结束指示符]的长度补充0,直至该长度满足8的倍数。(1byte=8bit)。
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ?我们有义务将数据码补充成与版本模式一致的长度。
    西虹网 西虹网
    西虹网 西虹网  ? ? ? ?根据数据码[模式指示符+字符计数指示符+模式编码+结束指示符+补充0]的长度轮流补充"11101100","00010001",以此让数据码字符合二维码版本、编码模式、纠错等级规定的数据码字长度。
    西虹网 西虹网
    西虹网 西虹网  如果你想了解更多有关代码如何实现,请通过以下链接获取到我在CSDN上的原创文章https://blog.csdn.net/bosaidongmomo/article/details/103195498
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 转播转播 分享分享
    回复

    使用道具 举报

    沙发
    发表于 2023-9-19 13:54:42 | 只看该作者
    路过,支持一下啦
    回复 支持 反对

    使用道具 举报

    板凳
    发表于 2023-9-19 16:59:35 | 只看该作者
    我是个凑数的。。。
    回复 支持 反对

    使用道具 举报

    地板
    发表于 2023-9-19 18:56:24 | 只看该作者
    帮帮顶顶!!
    回复 支持 反对

    使用道具 举报

    5#
    发表于 2023-9-19 19:52:10 | 只看该作者
    沙发!沙发!
    回复 支持 反对

    使用道具 举报

    6#
    发表于 2023-9-19 20:15:44 | 只看该作者
    没看完~~~~~~ 先顶,好同志
    回复 支持 反对

    使用道具 举报

    7#
    发表于 2023-9-19 22:25:12 | 只看该作者
    为自己家乡的社区网贡献点力量,回个帖子
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表