intから2進数、8進数、16進数の文字列に変換する
逆に文字列からintに戻す
// JRE 1.6.0_07
// java.lang.Integer
// intから2進数、8進数、16進数表記を取得したり、またintに戻したり
// tag binary octal hex decode
// 2進数にしてみる
String binary = Integer.toBinaryString( 100 );
System.out.println( binary );
// => 1100100
// 8進数にしてみる
String oct = Integer.toOctalString( 100 );
System.out.println( oct );
// => 144
// decodeで8進数文字列をintに戻す
// 最初に0が付いてれば、8進数として認識する
int iOct = Integer.decode( "0" + oct );
System.out.println( iOct );
// => 100
// 16進数にしてみる
String hex = Integer.toHexString( 100 );
System.out.println( hex );
// => 64
// decodeで16進数文字列をintに戻す
// 最初に0xが付いてれば、16進数として認識する
int iHex = Integer.decode( "0x" + hex );
System.out.println( iHex );
// => 100
// decodeは最初から0とか0xが付いてる文字列を、自動判別して戻す用で、
// 何進数か分かっているなら普通にparseIntを使う気もする
// parseIntで2進数文字列をintに
System.out.println(
Integer.parseInt( "1100100", 2 ) );
// => 100
// parseIntで8進(ry
System.out.println(
Integer.parseInt( "144", 8 ) );
// => 100
// 前に0が付いてる8進数の場合でも、radixを指定しなければ10進数として扱う
// 確かJavaScriptは自動判別して逆に面倒だった気がする
System.out.println(
Integer.parseInt( "0144" ));
// => 144
// parseIntで16(ry
System.out.println(
Integer.parseInt( "64", 16));
// => 100
// ちなみに0xとか付いてると例外になるので、そういう場合はdecodeを使うんだと思われる
System.out.println(
Integer.parseInt( "0x64", 16 ));
// => java.lang.NumberFormatException
// 変換については、toStringで基数指定してもOK
String str;
str = Integer.toString( 100, 2);
System.out.println( str );
// => 1100100
str = Integer.toString( 100, 8);
System.out.println( str );
// => 144
str = Integer.toString( 100, 16);
System.out.println( str );
// => 64