道路に関する問題解決のアイデアです:今進数を8進数に2進数を教えてくれ、進数に変換されます。進JAVAは、「&」記号算出8進数で利用することができる行う、16進数を右に「&」であってもよい16進数を使用して、4進数として表現することができます4回には4ビットの2進数を取得します。1が3に合うことができるように進へ進数の間に、進は、進数3のように表すことができます。注この問題点3のメジアン倍数ことを保証するために、二進数に変換されます。
輸入 java.utilの。* ; パブリック クラスメイン{ 公共 静的 ボイドメイン(文字列引数[]) { スキャナSC = 新しいスキャナ(System.in)。 INT、N = sc.nextInt()。 列A [] = 新しい文字列[n]は、 列Bは、[] = 新しい文字列[n]を、 以下のために(INT I = 0、I <N; I ++ ) { [I] = sc.next()。 B [i]は = "" ; } のために(INT iが= 0、I <N; I ++ ) { B [I] = hexToOctal([I])。 System.out.println(B [I])。 } } 静的ストリングhexToOctal(文字列str) { 文字列S = TO2(STR)。 ストリングS1 = ADD0(S)。 リターンTO8(S1)。 } 静的文字列TO2(文字列str) { チャー CHS [] = { '0'、 '1' }。 文字列s = 新しい文字列( "0123456789ABCDEF" ); チャー C1 [] =str.toCharArray(); INT POS = str.length()* 4 。 チャー C2 [] = 新しい CHAR [POS]。 用(INT I = str.length() - 1; I> = 0; i-- ) { int型の TEMP = s.indexOf(C1 [i])と; 用(INT ; J <4; J ++ J = 0 ) { C2 [ --pos] = CHS [TEMP&1 ]。 TEMP = TEMP >>> 1 。 } } 戻り 、新たな文字列(C2)を、 } 静的文字列ADD0(文字列str) { 文字列s(str.indexOf( '1' str.substring = ))。 INT LEN = s.length()。 もし(LEN%3 == 0 ) リターンS。 そう であれば(LEN%3 == 1 ) リターン "00" + S。 他の リターン "0" + S; } 静的文字列TO8(文字列str) { HashMapの <文字列、文字>マップ= 新しい HashMapの<文字列、文字> (); map.put( "000"、 '0' )。 map.put( "001"、 "); map.put( "010"、 '2' )。 map.put( "011"、 '3' )。 map.put( "100"、 '4' )。 map.put( "101"、 '5' ); map.put( "110"、 '6' )。 map.put( "111"、 '7' )。 INT POS = str.length()/ 3 。 チャー C1 [] = 新しい CHAR [POS]。 用(INT I = str.length(); I> 0; I- = 3 ) { 文字列sは = str.substring(I-3 、私); C1 [ --pos] =map.get(S); } 戻り 、新しい文字列(C1)を、 } }