2015-02-20 5 views
0

Я пытаюсь преобразовать int в двоичный, и я делаю ниже кода.Как преобразовать большой номер int в двоичный? - Java

public static String intToBinary16Bit(String strInt) { 
     String bin = Integer.toBinaryString(strInt); 
     return String.format("%016d", Integer.parseInt(bin)); 
    } 

Так что, если я даю strInt = 0211, чем он работает нормально и дает выход 0000001000010001.

Но, если я даю strInt = 4527, чем он бросает NumberFormateException.

Как я могу решить эту проблему?

+0

Ваш код не может скомпилировать. 'Integer.toBinaryString()' ожидает int как аргумент, а не String – fge

ответ

1

Попробуйте what eznme suggests here:

public class A { 
    public static void main(String[] args) { 

     int a = Integer.parseInt(args[0]); 
     System.out.println(a); 

     int bit=1; 
     for(int i=0; i<32; i++) { 
      System.out.print(" "+(((a&bit)==0)?0:1)); 
      bit*=2; 
     } 
    } 
} 
+0

Скопировано здесь. http://stackoverflow.com/a/5204040/1061944 –

1

Попробуйте использовать следующий метод, он использует рекурсию для преобразования.

private static void toBinary(int number) { 
     int remainder; 

     if (number <= 1) { 
      System.out.print(number); 
      return; 
     } 

     remainder = number % 2; 
     toBinary(number >> 1); 
     System.out.println(remainder); 
    } 
+0

Он работает, но он отображается только в 12 бит. не могли бы вы рассказать мне, как я могу сформировать его в 16 бит? – Vid

+0

просто проверьте длину «остатка» и «0» в строке. это оно. –

Смежные вопросы