class Test{
public static void main(String Args[]){
Integer x;
x = Integer.decode("0b111");
System.out.println(x);
}
}
これは、バイナリのプレフィックス 0 と、プレフィックス 0 の 8 進数では機能しません。正しい方法は何ですか?
class Test{
public static void main(String Args[]){
Integer x;
x = Integer.decode("0b111");
System.out.println(x);
}
}
これは、バイナリのプレフィックス 0 と、プレフィックス 0 の 8 進数では機能しません。正しい方法は何ですか?
のドキュメントを見ると、バイナリがInteger.decode
機能するという兆候は見られません。ただし、プレフィックスが 0 の 8 進数は機能するはずです。
System.out.println(Integer.decode("010")); // Prints 8
次のように、「0b」のバイナリ インジケーターを処理できます。
int value = text.toLowerCase().startsWith("0b") ? Integer.parseInt(text.substring(2), 2)
: Integer.decode(text);
15 の 2 進数、8 進数、10 進数、および 16 進数表現を示す完全なサンプル コード:
public class Test {
public static void main(String[] args) throws Exception {
String[] strings = { "0b1111", "017", "15", "0xf" };
for (String string : strings) {
System.out.println(decode(string)); // 15 every time
}
}
private static int decode(String text) {
return text.toLowerCase().startsWith("0b") ? Integer.parseInt(text.substring(2), 2)
: Integer.decode(text);
}
}
Integer.decode はバイナリを解析できません。API を参照してください。しかし、8進数は問題なく動作します。例:
int i = Integer.decode("011");
Java 7 以降、バイナリ リテラルをコード内で直接使用できます。ただし、これらはタイプbyte
、short
、int
またはlong
(および ではない String
) であることに注意してください。
int x = 0b111;