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で簡単な計算をして、その後の値を返すようなのを書こうと思う。