目录
前言
二维码,也叫二维条码,QR码,我们在生活中处处可见,购物,身份识别,广告,电影票等方方面面都有二维码的身影,那么在计算机语言中,二维码的原理是什么呢?我们如何制作自己的二维码,本系列将为你带来对二维码的介绍。
什么是二维码?
二维码其实是一种在二维条码的基础上发展出的另一维具有可读性的条码,这种矩阵条形码中存储有大量的数据,它由黑白像素组成,可以被扫描设备快速读取。下图是二维码的发展历程。
发展历史
从二进制到二维码
首先我想先讲讲计算机中的字符的对应关系,先从ASCII码和Unicode标准介绍。
ASCII码
ASCII码,全称为American Standard Code for Information Interchange,即美国信息交换标准代码,是一种用于表示文本字符的编码系统,它最初由美国国家标准学会(ANSI)在1963年开发,在之后的几十年内不断完善和扩展。
ASCII码使用的是7位二进制数来表示128个不同的字符,其中包括大写英文字母、小写英文字母、数字、标点符号和一些控制字符。每个字符都被赋予一个唯一的数字值,所以ASCII码其实就是一种字符编码。读者可以在网上找到完整的对应表。我这里简单举几个例子。
代码实现,非常简单,结果即为以下:
public class Test03 {
public static void main(String[] args){
//打印数字12到14的ASCII码及对应字符
for(int i=12;i<=14;i++){
char c=(char)(i+'0');//将数字转换为字符
int ascii=(int)c;//将字符转换位ASCII码
System.out.println("ASCII:"+ascii+",Character:"+c);
}
}
这里我想提一下一个点,其实我们去找完整的ASCII码,可以看到第12,第13和第14的对应关系其实是:换页键、回车键和不用切换。
那为什么输出的结果不是换页键、回车键和不用切换呢?这是因为ASCII码中,数字字符的编码是连续的,即从字符‘0’到‘9’的编码分别是48到57,依此类推12、13和14对应的分别就是60、61和62。在代码中,‘(i+'0'),这种方式只在数字字符的情况下才可以使用。如果要想直接对12、13和14这三个数字对应二进制数的字符输出,可以使用下面的方式。
public class Test03 {
public static void main(String[] args){
//打印数字12到14的ASCII码及对应字符
for(int i=12;i<=14;i++){
char c=(char)(i+'0');//将数字转换为字符
int ascii=(int)c;//将字符转换位ASCII码
System.out.println("ASCII:"+ascii+",Character:"+c);
}
for(int i=12;i<=14;i++){
char d=(char)i;//直接使用数字对应的ASCII码
int ascii=(int)d;//将字符转换位ASCII码
System.out.println("ASCII:"+ascii+",Character:"+d);
}
}
Unicode标准
Unicode,全称为Unicode标准(The Unicode Standard),也叫万国码,是一种字符编码标准,用于表示世界上所有的字符、符号和文字,能表示65536个全世界大部分国家和地区可能出现的各种字符,它为每个字符分配了一个唯一的数值,称为码点(Code Point),并定义了如何存储、传输和处理这些码点。
public class Test01 {
public static void main(String[] args){
//实现二维码的原因。转成二进制码
char a=12;
System.out.println(a);
char b='算';
System.out.println((int)b);
char c='\u7b97';
System.out.println(c);
}
}
unicode标准我们知道是大概怎么用即可,因为数据庞大,可以在具体使用的时候在说。
总结
计算机中的数据是分为各种类型的,我们要明白具体项目中不同数据类型的特点,合理运用。这篇文章先讲的是计算机中数据的对应关系,下篇文章我会具体讲解二维码的底层原理。