web-dev-qa-db-ja.com

Javaでのバイトおよび文字変換

キャラクターをbyteに変換してからcharに戻すと、そのキャラクターは不思議なことに消えて別のものになります。これはどのように可能ですか?

これはコードです:

char a = 'È';       // line 1       
byte b = (byte)a;   // line 2       
char c = (char)b;   // line 3
System.out.println((char)c + " " + (int)c);

2行目まではすべて正常です。

  • 1行目では、コンソールに「a」と印刷できますが、「È」と表示されます。

  • 2行目では、コンソールに「b」と印刷できますが、-56が表示されます。これは、バイトが署名されているため200です。そして200は「È」です。だからそれはまだ大丈夫です。

しかし、行3の何が問題になっていますか? 「c」は別のものになり、プログラムは? 65480。それはまったく違うものです。

正しい結果を得るために3行目に何を書くべきですか?

34
user1883212

new String(byteArray, Charset.defaultCharset())

これにより、バイト配列がJavaのデフォルトの文字セットに変換されます。 byteArrayで提供する内容によっては、例外がスローされる場合があります。

0
Joe