char[] 和 String 類型佔用字節大小問題

在 C 語言中 一、char a[10] = {"China"} 中,這個 a 佔用多少字節?bash

答:佔用 10 個字節。

解析:上面代碼對 a 作了賦值的操做,

a[0]='C' ,a[1]='h' ,a[2]='i' ,a[3]='n' ,a[4]='a' ,a[5]='\0',a[6]='\0',a[7]='\0',a[8]='\0',a[9]='\0'

因此,它佔用的是 10 個字節。
複製代碼

二、若是單指 」China「 ?微信

答:共 6 個字節。China 佔 5 個字節,最後以 '\0' 結束,佔 1 個字節。ide

在 Java 語言中
一、String s = "China"; 佔多少字節?

答:佔 5 個字節。
複製代碼
System.out.println(Charset.defaultCharset());//獲取ide默認編碼類型
String s = new String("China".getBytes());
byte[] b = s.getBytes();
System.out.println("" + b.length);
複製代碼

以上代碼,能夠輸出 "China" 所佔的字節長度爲 5學習

二、String s = "中國"; 佔多少字節?編碼

答:若是是 漢字 的狀況須要考慮編碼。spa

(1)GBK 編碼(ide默認)時,每個漢字佔用 2 個字節,那麼中國佔 4 個字節。.net

(2)UTF-8 編碼時,每個漢字佔用 3 個字節,那麼中國佔用 6 個字節。code

三、轉碼問題,GBK 轉 UTF-8 時,字節佔用會變大嗎?反過來呢?blog

//獲取的是 UTF-8編碼
System.out.println(Charset.defaultCharset());
String s;
try {
        s = new String("中國".getBytes(),"GBK");
        byte[] b = s.getBytes();
        System.out.println("" + b.length);
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
}
複製代碼

如上代碼是:UTF-8 轉 GBK 編碼格式,s 長度從 6 字節變爲 9 字節。 s 內容變化:中國 —> 涓浗 由於當前編碼是 UTF-8,轉碼以後變成了 3 個文字,佔用 9 個字節。然而,反過來的狀況是這樣的:utf-8

中國 (gbk) —> ?й? (utf-8) s 長度從 4字節 變成了 4字節,雖然長度沒發生改變,可是文字已經改變。這裏的 ? 佔用 1 個字節。

給你們推薦一個優秀的iOS交流平臺,平臺裏的夥伴們都是很是優秀的iOS開發人員,咱們專一於技術的分享與技巧的交流,你們能夠在平臺上討論技術,交流學習。歡迎你們的加入(想要進入的可加微信)。 18174412518

轉載原文連接:blog.csdn.net/smile_Runni…

相關文章
相關標籤/搜索