3

私は以下の簡単なプログラムを書いて、hello をアラビア語で出力しました:"سلام" しかし、コンソールでの出力は正しくありません:

import static java.lang.Integer.toBinaryString;

import java.util.Arrays;


public class testOfPrintln {
    public static void main(String []strings){
        String test="salam";
        String test2="سلام";//unicode , arabic
        byte []strbytes=test.getBytes();
        int i=1;
        for(byte bb:strbytes)
            System.out.println(i++  + "    -> " + bb);
        byte []strbytes2=test2.getBytes();
        i=1;
        for(byte bb2:strbytes2){
            System.out.println(i++  + "    ->   " + bb2);
        }
    }

}

そして出力:

1    -> 115
2    -> 97
3    -> 108
4    -> 97
5    -> 109
1    -> -40
2    -> -77
3    -> -39
4    -> -124
5    -> -40
6    -> -89
7    -> -39
8    -> -123

バイトの前に「-」文字があるのはなぜですか? 例: -123 tnx。

4

2 に答える 2

2

Java では、-128 から 127 の範囲の値を持つ符号付き整数です。符号なしの値が必要な場合はbyte255int(AND 演算を行うと暗黙的に行われます) にキャストし、AND を使用します。

System.out.println(i++  + "    -> " + (bb & 0xff));
于 2013-07-21T18:52:02.860 に答える