位/字节/ASCII/UTF-8/GBK/GB2312/Unicode 扫盲

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了位/字节/ASCII/UTF-8/GBK/GB2312/Unicode 扫盲相关的知识,希望对你有一定的参考价值。


1个字节(Byte)=8位 bit 

1位就是计算机中的 1 或0


比如10进制1 ,ASCII码是49,二机制是: 00110001

它占用一个字节。



ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。如一个ASCII码就是一个字节。

技术分享


UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。

Unicode编码Unicode是一种编码规范,是为解决全球字符通用编码而设计的,而UTF-8,UTF-16等是这种规范的一种实现,它是接口,UTF-8和UTF-16是实现类.

GBK编码:一个英文等于一个字节,一个中文(含繁体)等于两个字节。

GB2312编码:一个英文等于一个字节,一个中文(含繁体)等于两个字节。


符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。


 上代码++++>>>

public static void main(String[] args) {
        try {

            String str = "1";
            byte[] defaultByte = str.getBytes();
            byte[] utf8Byte = str.getBytes("UTF-8");
            byte[] gbkByte = str.getBytes("GBK");
            byte[] gb2312Byte = str.getBytes("gb2312");
            byte[] unicodeByte = str.getBytes("unicode");

            System.out.println(toString(defaultByte));
            System.out.println(toString(utf8Byte));
            System.out.println(toString(gbkByte));
            System.out.println(toString(gb2312Byte));
            System.out.println(toString(unicodeByte));
            
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

    }

    public static String toString(byte[] array) {
        StringBuilder sb = new StringBuilder();

        for (byte b : array) {
            sb.append(b);
            sb.append(" ");
        }
        return sb.toString();
    }


“1”的结果为:

49 
49 
49 
49 
-2 -1 0 49 

“a”的结果为:
97 
97 
97 
97 
-2 -1 0 97 

“中”的结果为:
-28 -72 -83 
-28 -72 -83 
-42 -48 
-42 -48 
-2 -1 78 45 


“薅”的结果为:
-24 -106 -123 
-24 -106 -123 
-34 -74 
-34 -74 
-2 -1 -123 -123

Unicode怎么是4个字节呢??????????????

经过研究,Unicode 等同于 UTF-16,用4个字节代表一个字母或者一个中文




字节不同数量级间

数据存储是以10进制表示,数据传输是以2进制表示的,所以1KB不等于1000B。

1KB=1024B;1MB=1024KB=1024×1024B。其中1024=210

1B(byte,字节)= 8 bit(见下文);

1KB(Kibibyte,千字节)=1024B= 2^10 B;

1MB(Mebibyte,兆字节,百万字节,简称“兆”)=1024KB= 2^20 B;

1GB(Gigabyte,吉字节,十亿字节,又称“千兆”)=1024MB= 2^30 B;

1TB(Terabyte,万亿字节,太字节)=1024GB= 2^40 B;

1PB(Petabyte,千万亿字节,拍字节)=1024TB= 2^50 B;

1EB(Exabyte,百亿亿字节,艾字节)=1024PB= 2^60 B;

1ZB(Zettabyte,十万亿亿字节,泽字节)= 1024EB= 2^70 B;

1YB(Yottabyte,一亿亿亿字节,尧字节)= 1024ZB= 2^80 B;

1BB(Brontobyte,一千亿亿亿字节)= 1024YB= 2^90 B;

1NB(NonaByte,一百万亿亿亿字节) = 1024 BB = 2^100 B;

1DB(DoggaByte,十亿亿亿亿字节) = 1024 NB = 2^110 B;[1]


GBK与GB2312的区别??

GBK是新标准,收录了2万多个汉字和符号

GB2312只收录了6千多

GBK是完全兼容GB2312的


用UTF-8 存储:

1KB 可以存放  1024 个英文字母  341个汉字

 1MB可以存放  104.8万个英文字符 34.9万个汉字


本文出自 “12314480” 博客,请务必保留此出处http://12324480.blog.51cto.com/12314480/1876260

以上是关于位/字节/ASCII/UTF-8/GBK/GB2312/Unicode 扫盲的主要内容,如果未能解决你的问题,请参考以下文章

位,字节,字的小XX

位(bit)字节(byte)字

字节字位比特的概念和关系转发

字节字位比特,这四者之间的关系

MongoDB stats() 函数是不是返回位或字节?

字,位,字节,bit,二进制位的意思和关系