c语言画四叶图案编程代码 实现整个代码的过程可以分为,准备数据码,准备纠错码,输出二维码三个部分,下面会通过"HELLOWORLD"这个例子展开讲解每个部分。 0.准备数据码 0.1.确定纠错等级 纠错等级分为L,M,Q,H,越高的纠错等级拥有更强的恢复数据的能力,更高级别的错误校正需要更多的字节,因此更高级别的错误校正将必须具有更大的QR码。这里我们选择M纠错级别。 0.2.确定数据最小版本 不同大小的QR码称为版本。二维码目前有四十个版本。最小的版本是版本1,大小为21像素x21像素。版本2为25像素乘25像素。最大的版本是40版,大小为177x177像素。每个版本比以前的版本大4个像素。每个版本具有最大容量,具体取决于使用的模式。同时对于纠错码的选择也会对版本的最大容量有影响,具体的官方给出了一张表可以查看,容量表。在我是实现代码时,目标是简单实现,所以选择了最小的21x21版本。 0.3.模式指示器 模式指示器就是说使用什么编码形式,编码形式主要有数值模式、字母数字模式、字节模式、汉字模式、ECI模式。我为了扫描出HELLOWORLD,选择了比较简单的字母数字模式,关于模式与对应的编码可以参考下表。 0.4.字符长度指示器 这一步是展示你的字符是多长的,对于不同的版本需要把字符长度转成不同的二进制编码长度,可以参考下面这张表。 上文提到我们使用的是字母数字模式,"HELLOWORLD"的长度为11,转成二进制为1011,我们需要补充位数到九位,得到000001011。 把上一步得到的模式指示器编码0010与字符长度指示器编码接到一起,得到0010000001011。 0.5.字符编码 上文中提到我们使用的是字母数字编码模式,于是我们参考字母数字编码规范进行字符编码,首先根据字符索引表查到每个字符对应的索引值,将整个字符串从左到右两两分组,每组中第一个字符索引值乘以45加上第二个字符索引值,将结果转化为11位的二进制数,不足11位在左侧补0以达到长度。如果字符串长度为奇数,将最后的单身狗字符转换成6位二进制。 最终,"HELLOWORLD"可以得到以下字符编码值: HE->17*45+14->779->01100001011 LL->01111000110 O(空格)->10001011100 WO->10110111000 RL->10011010100 D->001101 将以上内容拼接起来,我们得到61位字符编码,根据QR二维码规范,版本1-M的二维码需要128位的数据编码,目前我们已经有4位编码指示符(0010),9位字符计数符(000001011),和61位的字符编码,共计74位,还差54位。根据规则,当长度不达到128位时,我们需要做如下流程。 如果相差位数大于等于4位,那么增添一个4位的终止符,0000,我们距离128位还差54位,显然是大于4的,于是加上4位终止符,长度来到78位。 本文来源:https://www.wddqw.com/doc/b6a13d0740323968011ca300a6c30c225901f0df.html