Wie konvertiert der Compiler Integer in String und umgekehrt

8

Viele Sprachen haben Funktionen zum Konvertieren von String in Integer und umgekehrt. Was passiert da? Welcher Algorithmus wird während der Konvertierung ausgeführt?

Ich frage nicht in einer bestimmten Sprache, weil ich denke, dass es in allen von ihnen ähnlich sein sollte.

    
Templar 19.08.2011, 15:00
quelle

3 Antworten

13

Um eine Zeichenkette in eine Ganzzahl zu konvertieren, nehmen Sie jedes Zeichen der Reihe nach und wenn es in dem Bereich '0' bis '9' ist, konvertieren Sie es in seine Dezimaläquivalente. Normalerweise subtrahiert man einfach den Zeichenwert von '0'. Jetzt multiplizieren Sie alle vorherigen Ergebnisse mit 10 und fügen Sie den neuen Wert hinzu. Wiederholen, bis keine Ziffern mehr übrig sind. Wenn ein vorangestelltes '-' Minuszeichen vorlag, invertiere das Ergebnis.

Um eine Ganzzahl in eine Zeichenkette umzuwandeln, invertieren Sie die Zahl, wenn sie negativ ist. Teilen Sie die ganze Zahl durch 10 und speichern Sie den Rest. Wandle den Rest in ein Zeichen um, indem du den Zeichenwert '0' hinzufügst. Drücken Sie dies an den Anfang der Zeichenfolge; wiederhole jetzt mit dem Wert, den du von der Division erhalten hast. Wiederholen Sie dies, bis der geteilte Wert Null ist. Geben Sie ein vorangestelltes '-' Minuszeichen aus, wenn die Zahl negativ begann.

Hier sind konkrete Implementierungen in Python, die meiner Meinung nach die Sprache ist, die Pseudo-Code am nächsten ist.

%Vor%     
Mark Ransom 19.08.2011, 15:16
quelle
1

Ich würde es nicht als Algorithmus an sich bezeichnen, aber abhängig von der Sprache wird es die Umwandlung von Zeichen in ihr integrales Äquivalent beinhalten. Viele Sprachen werden entweder beim ersten Zeichen stehenbleiben, das nicht als Ganzzahl dargestellt werden kann (zB der Buchstabe a ), werden blind alle Zeichen in ihren ASCII-Wert umwandeln (zB der Buchstabe a wird 97 ) oder werden ignoriert Zeichen, die nicht als Ganzzahlen dargestellt werden können und nur diejenigen konvertieren, die - oder 0 zurückgeben können. Sie müssen sich genauer mit dem Framework / der Sprache vertraut machen, um mehr Informationen zur Verfügung zu stellen.

    
user195488 19.08.2011 15:08
quelle
1

String zu Ganzzahl:

Viele (die meisten) Sprachen stellen Zeichenfolgen auf der einen oder anderen Ebene als Array (oder Liste) von Zeichen dar, die auch kurze Ganzzahlen sind. Ordnen Sie die Nummernzeichen dem Nummernwert zu. Zum Beispiel wird '0' in ASCII durch 48 dargestellt. Sie ordnen also 48 zu 0, 49 zu 1 usw. zu.

Ausgehend von links multiplizieren Sie Ihre aktuelle Summe mit 10, addieren den Wert des nächsten Charakters und gehen weiter. (Sie können eine größere oder kleinere Karte erstellen, die Anzahl, um die Sie bei jedem Schritt multiplizieren, ändern und Strings jeder beliebigen Basis konvertieren.)

Integer to string ist ein längerer Prozess, bei dem die Basis in 10 konvertiert wird. Da die meisten Integer nur begrenzte Bits haben (normalerweise 32 oder 64), wissen Sie, dass es höchstens eine bestimmte Anzahl von Zeichen in einer Zeichenfolge gibt (20?). Sie können also Ihren eigenen Addierer einrichten und nach der Berechnung seines Werts (2 ^ Platz) jeden Platz für jedes Bit durchlaufen.

    
bdares 19.08.2011 15:13
quelle

Tags und Links