2016-04-01 8 views
2

:9 karakterden uzun ikili dizeleri tamsayılara nasıl dönüştürebilirim? Ben bir ikili dize almak ve bu kod parçası kullanarak bir tamsayı dönüştürmek için çalışıyorum bir program üzerinde çalışıyorum

int x = Integer.parseInt(arrayList.get(count), 2); 
//arrayList is a collection of 30 character binary strings 
//count is an incrementing integer used to choose which string to use while inside of a while loop 

Ben ancak, bu tür "001010" olarak dizeleri ile bu programı test ettik örneğin "100000110000010100001111010110" derlerken gibi daha büyük dizeleri ile ancak terminal çıkışı bana bir hata veriyor:

"@ java.lang.NumberFormatException.forInputString(NumberFormatException.java:(line number)) 

Bunu nasıl düzeltebilirim? Sen java.math.BigInteger deneyebilirsiniz

+1

I 'long' ya da 'BigInteger' –

+0

' Long.parseLong' – Kon

+0

düzenlemeyi kullanarak denemek: uzun ondalık bir = Long.parseLong' çalıştı (arrayList.get (sayım), 2); 'aynı hata verdi – corvonik

cevap

1

ait Long.parseLong yöntemi deneyin.

String bin = "100000110000010100001111010110"; 
BigInteger bi = new BigInteger(bin, 2); 
System.out.println(bi); 

Çıktı: Ayrıca bu Long.valueOf() kullanarak kayıt olabilirsiniz

549536726 

. Ancak, Long ile ikili dizeleriniz 63 bit uzunluğunda olabilirken, BigInteger ile uzunluk keyfi olarak çok sayıda bit olabilir.

String bin = "100000110000010100001111010110"; 
long biLong = Long.valueOf(bin, 2); 
System.out.println(biLong); 
0

yerine Integer.parseInt

İlgili konular