Saya memiliki array String yang mewakili bilangan Biner (tanpa nol di depan) yang ingin saya ubah ke bilangan basis 10 yang sesuai. Mempertimbangkan:
binary 1011 becomes integer 11
binary 1001 becomes integer 9
binary 11 becomes integer 3 etc.
Apa cara terbaik untuk melanjutkan? Saya telah menjelajahi java.lang.number. * Tanpa menemukan metode konversi langsung. Integer.parseInt(b)
menghasilkan integer yang SAMA dengan String ... misalnya, 1001 menjadi 1.001, bukan 9 ... dan tampaknya tidak menyertakan parameter untuk basis keluaran. toBinaryString
apakah konversi ke arah yang salah. Saya rasa saya perlu melakukan konversi beberapa langkah, tetapi tidak dapat menemukan kombinasi yang tepat dari metode atau subclass. Saya juga tidak yakin sejauh mana angka nol di depan atau ketiadaan akan menjadi masalah. Adakah yang punya petunjuk arah yang baik untuk menunjukkan saya?
Jawaban:
Anda perlu menentukan radix . Ada kelebihan
Integer#parseInt()
yang memungkinkan Anda melakukannya.sumber
Ini mungkin berhasil:
sumber
for
loop dan perhitunganresult
variabel baru tidak benar.berfungsi dengan baik jika Anda berurusan dengan bilangan positif tetapi jika Anda perlu berurusan dengan nomor yang ditandatangani, Anda mungkin perlu menandatangani memperpanjang string Anda kemudian mengubahnya menjadi Int.
Saya harap itu membantu!
sumber
sumber
Saya rasa saya bahkan lebih bosan! Jawaban Hassan yang dimodifikasi agar berfungsi dengan benar.
sumber
Bagi saya, saya mendapat NumberFormatException saat mencoba menangani angka negatif. Saya menggunakan yang berikut untuk angka negatif dan positif.
sumber
Versi Java's Integer.parseInt (teks) telah diperbaiki agar berfungsi dengan angka negatif:
sumber
Saya suka loop! Yay!
While loop dengan akumulator, kiri ke kanan (
l
tidak berubah):Kanan ke kiri dengan 2 loop vars, terinspirasi oleh Convert boolean to int di Java (benar-benar mengerikan):
Implementasi yang agak lebih masuk akal:
Versi yang dapat dibaca: p
sumber
Jika Anda khawatir tentang kinerja,
Integer.parseInt()
danMath.pow()
terlalu mahal. Anda dapat menggunakan manipulasi bit untuk melakukan hal yang sama dua kali lebih cepat (berdasarkan pengalaman saya):Dimana
Keluaran:
sumber