Konvertiere eine Zeichenzahl in die entsprechende Ganzzahl in C
Gibt es eine Möglichkeit zum konvertieren eines Zeichens in eine Ganzzahl in C?
Beispielsweise aus '5'
5?
InformationsquelleAutor der Frage Flow | 2009-03-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als pro anderen Antworten, das ist in Ordnung:
Auch, für Fehler zu überprüfen, möchten Sie vielleicht zu prüfen, isdigit(c) ist wahr ersten. Beachten Sie, dass Sie nicht komplett portabel das gleiche tun, für Briefe, zum Beispiel:
Standard garantiert, dass die char-Werte für die Ziffern '0' bis '9' zusammenhängend sind, übernimmt aber keine Garantien für andere Zeichen, wie die Buchstaben des Alphabets.
InformationsquelleAutor der Antwort Chris
Subtrahieren von '0' wie dieser:
C-Standard garantiert, dass jede Ziffer in den Bereich
'0'..'9'
um eins größer ist als seine vorherigen Stelle (in Abschnitt5.2.1/3
des C99-Entwurf). Das gleiche gilt für C++.InformationsquelleAutor der Antwort Johannes Schaub - litb
Wenn, von irgendeinem verrückten Zufall, die Sie konvertieren möchten, eine string von Zeichen in eine Ganzzahl, können Sie das auch tun!
val
jetzt 1024. Offenbaratoi()
ist in Ordnung, und was ich gesagt habe, über die es früher nur für mich (auf OS X (vielleicht (Lisp einfügen Witz hier))). Ich habe gehört, es ist ein makro, dass die Karten rund um das nächste Beispiel verwendetstrtol()
ein allgemeiner-Zweck-Funktion, um die Konvertierung statt:strtol()
funktioniert wie folgt:Er wandelt
*str
zu einemlong
behandeln Sie es als ob es eine Basisbase
Anzahl. Wenn**endptr
nicht null ist, hält es die ersten nicht-Ziffer-Zeichenstrtol()
gefunden (aber who cares).InformationsquelleAutor der Antwort Chris Lutz
InformationsquelleAutor der Antwort Kevin Conner
Subtrahieren char '0' oder int 48 wie diese:
ODER
InformationsquelleAutor der Antwort Arif
Wenn es nur ein einzelnes Zeichen 0-9 in ASCII, dann subtrahieren Sie den Wert des ASCII-null-Zeichen aus ASCII-Wert sollte gut funktionieren.
Wenn Sie konvertieren möchten größere zahlen dann Folgendes tun:
** vergessen Sie nicht, überprüfen Sie den status (die sollte 1 sein, wenn es funktionierte im obigen Fall).
Paul.
InformationsquelleAutor der Antwort Paul W Homer
InformationsquelleAutor der Antwort Alphaneo
Wenn ich brauche, um etwas zu tun, wie ich prebake ein array mit den Werten, die ich möchte.
Dann ist die Konvertierung ist einfach
Dies ist im Grunde der Ansatz, der von vielen Implementierungen der Bibliothek ctype.
Sie können trivial anpassen, dies funktioniert mit hex-Ziffern zu.
InformationsquelleAutor der Antwort Michael Anderson
Überprüfen,
nur 0,1,2,....,E,F.
InformationsquelleAutor der Antwort Shiva
Verwenden Sie einfach die
atol()
Funktion:InformationsquelleAutor der Antwort Dylan halls
Konvertieren Zeichen Ziffer zu den entsprechenden integer. Tun, wie unten gezeigt:
Logik hinter der Berechnung oben, ist das Spiel mit ASCII-Werten. ASCII-Wert von Zeichen 8 ist 56, ASCII-Wert des Zeichens 0 ist 48. ASCII-Wert der Ganzzahl 8 ist 8.
Wenn wir subtrahieren zwei-Zeichen, Subtraktion passieren wird zwischen ASCII-Zeichen.
InformationsquelleAutor der Antwort Ashish
Funktion: atoi für array-integer, atof für array an float-Typ;
oder
InformationsquelleAutor der Antwort K.tin
Würden Sie es umwandeln in einen int (oder float oder double oder was sonst immer Sie wollen zu tun), und speichern Sie es in anoter variable.
InformationsquelleAutor der Antwort SeanJA