har[] と String 型が占めるバイト サイズの問題

(*-*)浩
リリース: 2019-08-08 17:15:52
転載
2136 人が閲覧しました

har[] と String 型が占めるバイト サイズの問題

C言語

1, char a[10] = {"中国"}, これはいくつバイトは占有しますか?

回答: 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.「中国」のみを指す場合?

答え: 合計 6 バイト。中国は 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);
ログイン後にコピー

上記のコードは、「中国」が占めるバイト長が 5

2 であることを出力できます。 String s = "China"; は何バイトを占めるでしょうか?

回答: 漢字の場合、エンコードを考慮する必要があります。

(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 コンテンツの変更: 中国 —> Juan浗

現在のエンコードは UTF-8 であるため、トランスコード後は 3 文字になり、9 バイトを占有します。ただし、逆の状況は次のようになります:

China (gbk) —> ?й? (utf-8)

s 長さは 4 バイトから 4 バイトに変わりますが、長さは 4 バイトから 4 バイトに変わります。テキストは変わっていません。ここ ? 1バイトを占有します

以上がhar[] と String 型が占めるバイト サイズの問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート