在C 語言中
1、char a[10] = {"China"} 中,這個a 佔用多少位元組?
答案:佔用 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 個位元組。
2、如果單指 ”China“ ?
答案:共 6 個位元組。 China 佔 5 個字節,最後以 '\0' 結束,佔 1 個位元組。
在 Java 語言中
1、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
2、String s = "中國"; 佔多少位元組?
答:如果是 漢字 的情況需要考慮編碼。
(1)GBK 編碼(ide預設)時,每個漢字佔用 2 個字節,那麼中國佔 4 個位元組。
(2)UTF-8 編碼時,每個漢字佔用 3 個位元組,那麼中國佔用 6 個位元組。
3、轉碼問題,GBK 轉 UTF-8 時,位元組佔用會變大嗎?反過來呢?
//获取的是 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 個位元組。然而,反過來的情況是這樣的:
中國(gbk) —> ?й? (utf-8)
s 長度從4位元組變成了4位元組,雖然長度沒有改變,但文字已經改變。這裡的 ?佔用 1 個位元組
以上是har[] 和 String 類型佔用位元組大小問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!