8
この Java プログラムの出力がとである理由は、それぞれ9
印刷しようとしたときです。010
011
public class Test{
public static void main(String str[]){
System.out.println(011);
}
}
理由は何ですか?
8
この Java プログラムの出力がとである理由は、それぞれ9
印刷しようとしたときです。010
011
public class Test{
public static void main(String str[]){
System.out.println(011);
}
}
理由は何ですか?
010
10
は、8 進法での の解釈です8
。同様に011
、 の解釈11
はoctal base
です9
。
を前に付けるinteger
と0
、 で解釈されoctal base
ます。
同様に、表現である print を試すことができ、出力として得0x10
られます。hexadecimal
16
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);
-整数をバイナリ データに変換する場合は、toBinaryString()
メソッドを使用します。
例えば:
int i = 8;
Integer.toBinaryString(i);