对于中文怎么转二进制的?
GBK编码,是在GB2312-80标准基础上的内码扩展规范,使用了双字节编码方案,其编码范围从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,完全兼容GB2312-80标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。
我们经常使用各种编码标准的汉字,编码到底是什么呢?所谓编码,是以固定的顺序排列字符,并以此做为记录、存贮、传递、交换的统一内部特征,这个字符排列顺序被称为“编码”。
- GBK编码下中文为什么占两个字节?因为英文字符占一个字节,一个字节是8个二进制位。因为英文中所有键盘上每一个字符,符号啥的都可以用8位二进制来唯一标识。那汉字呢?因为GBK一共收录21003个汉字,那么21003转成二进制是101001000001011(15位),如果每个汉字都用唯一的二进制来标识的话,那么需要两个字节长度(16位)来标识,最多可以标识65535(1111111111111111)个汉字。
- 那UTF-8(Unicode Transformation Format-8)为啥占三个字节呢?因为当时GBK编码只是针对中文的,那时候每个国家都有自己的编码方式,这就导致,比如法国给中国发一个邮件,因为字符集编码不同,打开都会是乱码的。所以全世界为了统一所有的二进制编码,出现了unicode,16位的二进制不够用,扩充到了24位。
2,汉字(或字符)怎么转Ascii码呢
首先看一下下面代码:
public static void main(String[] args) throws InterruptedException {
char c1 = 97;
char c2 = 25105;
System.out.println(c1);
System.out.println(c2);
System.out.println("-----------------");
int v1 = 'a';
int v2 = '我';
System.out.println(v1);
System.out.println(v2);
System.out.println("------------一个数字与一个字符进行转换-------------");
char c3 = 'a' + 1;
int v3 = 'a' + 1;
System.out.println("c3: " + c3);
System.out.println("v3: " + v3);
System.out.println("(char)v3: " + (char)v3);
System.out.println("----------------------------------");
StringBuffer str = new StringBuffer();
for (int i = 0; i < 127 ; i++) {
str.append((char)i);
}
System.out.println(str.toString());
System.out.println("----------------------------------");
//int类型转char类型,
/*
* 注意下面的 “+'0'” ,是因为在Ascii码中十进制0~31是没有对应任何字符的,只有从32开始
* 才对应空格...
* 如果把十进制的数字0转成字符'0',其实就是让这个数字直接加'0'【对应的是10进制的48】
* 如果把十进制的数字4转成字符'4',可以直接用'0'加4就行。
*/
int v4 = 4;
char c4 = (char) (v4 + '0');
System.out.println("v4: "+v4+" to char is:"+c4);
int v4_1 = c4;
System.out.println(v4_1);
//char类型转int类型
char c5 = '3';
int v5 = c5 - '0';
System.out.println("c5 : "+ c5 +" to number is:"+v5);
}
控制台输出: