Shammer's Philosophy

My private adversaria

Java16進数演算標準版?

Java16進数演算 on String - Shammerismで、自分で16進数の演算をやるようにしてみたが、なんかもっとうまいやり方がありそうな気がして調べたら・・・あった。標準ライブラリでできる。Integer.parseInt(String, int)とかInteger.toString(int, int)を使用すればいいようだ。どちらも2つ目の引数が基数になる。

16進数->10進数

public class Test {
    public static void main(String[]args){
	System.out.println(Integer.parseInt(args[0], 16));
    }
}

実行結果は以下。

$ java Test A
10
$ java Test 9
9
$ java Test 255
597
$ java Test ff
255
$

10進数->16進数

public class Test {
    public static void main(String[]args){
	int x = Integer.parseInt(args[0]);
	System.out.println(Integer.toHexString(x));
    }
}

実行結果は以下。

$ java Test ff
Exception in thread "main" java.lang.NumberFormatException: For input string: "ff"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.parseInt(Integer.java:615)
	at Test.main(Test.java:3)
$ java Test 255
ff
$ java Test 1
1
$ java Test 2
2
$ java Test 9
9
$ java Test 10
a
$ java Test 16
10
$ java Test 15
f
$

もっと汎用的にできるようにしたい。基数を持たせてインスタンスにし、equalとかnextで簡単な計算をして、その後の値を返すようなのを書こうと思う。