Ich habe eine Reihe von Zeichenfolgen, die Binärzahlen (ohne führende Nullen) darstellen, die ich in die entsprechenden Basis-10-Zahlen konvertieren möchte. Erwägen:
binary 1011 becomes integer 11
binary 1001 becomes integer 9
binary 11 becomes integer 3 etc.
Wie gehe ich am besten vor? Ich habe java.lang.number. * Untersucht, ohne eine direkte Konvertierungsmethode gefunden zu haben. Integer.parseInt(b)
ergibt eine ganze Zahl EQUAL zum String ... zB wird 1001 zu 1.001 statt 9 ... und scheint keinen Parameter für eine Ausgabebasis zu enthalten. toBinaryString
macht die Umwandlung die falsche Richtung. Ich vermute, dass ich eine mehrstufige Konvertierung durchführen muss, kann aber anscheinend nicht die richtige Kombination von Methoden oder Unterklassen finden. Ich bin mir auch nicht sicher, inwieweit führende Nullen oder deren Fehlen ein Problem sein werden. Hat jemand eine gute Richtung, um mich zu zeigen?
Antworten:
Sie müssen den Radix angeben . Es gibt eine Überladung,
Integer#parseInt()
die es Ihnen ermöglicht.quelle
Dies könnte funktionieren:
quelle
for
Schleife und Berechnung der neuenresult
Variablen ist nicht korrekt.funktioniert einwandfrei, wenn Sie mit positiven Zahlen arbeiten, aber wenn Sie mit vorzeichenbehafteten Zahlen arbeiten müssen, müssen Sie möglicherweise Ihre Zeichenfolge mit Vorzeichen erweitern und dann in eine Int konvertieren
Ich hoffe das hilft!
quelle
quelle
Ich schätze, ich langweile mich noch mehr! Hassans Antwort wurde geändert, um korrekt zu funktionieren.
quelle
Für mich habe ich NumberFormatException bekommen, als ich versucht habe, mit den negativen Zahlen umzugehen. Ich habe Folgendes für die negativen und positiven Zahlen verwendet.
quelle
Die Version von Java's Integer.parseInt (Text) wurde korrigiert, um mit negativen Zahlen zu arbeiten:
quelle
Ich liebe Loops! Yay!
While-Schleife mit Akkumulator von links nach rechts (
l
ändert sich nicht):Von rechts nach links mit 2 Loop-Vars, inspiriert von Convert boolean to int in Java (absolut schrecklich):
Eine etwas vernünftigere Implementierung:
Eine lesbare Version: p
quelle
Wenn Sie sich Sorgen um die Leistung machen
Integer.parseInt()
undMath.pow()
zu teuer sind. Sie können die Bitmanipulation verwenden, um dasselbe doppelt so schnell auszuführen (basierend auf meiner Erfahrung):Wo
Ausgabe:
quelle