位/字節/ASCII/UTF-8/GBK/GB2312/Unicode 掃盲


1個字節(Byte)=8位 bit 

1位就是計算機中的 1 或0


比如10進制1 ,ASCII碼是49,二機制是: 00110001

它佔用一個字節。



ASCII碼:一個英文字母(不分大小寫)佔一個字節的空間,一箇中文漢字佔兩個字節的空間。一個二進制數字序列,在計算機中作爲一個數字單元,一般爲8位二進制數,換算爲十進制。最小值0,最大值255。如一個ASCII碼就是一個字節。

wKiom1g2p2_AjC2OAAC5Gy_xrAE704.jpg


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萬個漢字


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章