2

8この Java プログラムの出力がとである理由は、それぞれ9印刷しようとしたときです。010011

public class Test{
   public static void main(String str[]){ 
      System.out.println(011); 
   }
}

理由は何ですか?

4

4 に答える 4

6

01010は、8 進法での の解釈です8。同様に011、 の解釈11octal baseです9

を前に付けるinteger0、 で解釈されoctal baseます。

同様に、表現である print を試すことができ、出力として得0x10られます。hexadecimal16

于 2012-11-18T17:19:22.233 に答える
6

Java では、整数から文字列へのデフォルトの変換は基数 10 です。別の基数が必要な場合は、明示的に指定する必要があります。たとえば、次を使用して整数値をバイナリ文字列に変換できます。

Integer.toString(value, 2);

同様に、次のようにして 8 進数値に変換できます。

Integer.toString(value, 8);

値が 0 でない限り、文字列には先行ゼロがありません。先頭に 0 が必要な場合は、先頭に追加する必要があります。または、次のように書式設定し、String.format()ゼロ フィルと変換後の文字列の最小幅を指定することもできます。

String.format("%1$03o", value); // the "1$ in the format string is optional here

PSあなたの質問からは、正確な問題が何であるかは明らかではありません。整数値から文字列に変換しているようです。ただし、問題が文字列 "011" を読み取ろうとしていて、整数値 9 として読み取られている場合、これは先頭の 0 が 8 進値として解釈されるためです。それを文字列値として読み取ってから、文字列から整数への変換を基数 10 に明示的に指定する必要があります。

int val = Integer.valueOf(stringValue, 10);
于 2012-11-18T17:19:30.097 に答える
1

-整数をバイナリ データに変換する場合は、toBinaryString()メソッドを使用します。

例えば:

int i = 8;
Integer.toBinaryString(i);
于 2012-11-18T17:23:03.353 に答える