Wie kann ich ein ASCII-Zeichen in C in ein Int umwandeln?
Wie konvertiert man ein ASCII-Zeichen in ein int in C
Knoten-Ninja
Wie wäre es mit:
int a_as_int = (int)'a';
-
Ich füge dem Argument die notwendige Referenz hinzu: stackoverflow.com/questions/433895/…
– xanatos
16. März 2011 um 12:34 Uhr
Suchen Sie danach:
int c = some_ascii_character;
Oder einfach ohne Zuweisung konvertieren:
(int)some_aschii_character;
Benutzer unbekannt
Ich stimme Ashot und Cwan zu, aber vielleicht möchten Sie eine ASCII-Chiffre wie ‘7’ in eine Ganzzahl wie 7 umwandeln?
Dann empfehle ich:
char seven = '7';
int i = seven - '0';
oder vielleicht bekommst du eine Warnung,
int i = (int) (seven - '0');
korrigiert nach Kommentaren, danke.
-
In C gibt es dafür keine Warnung.
– Chris Lutz
16. März 2011 um 7:29 Uhr
-
Wenn es eine Warnung gäbe, würden Sie sie eher für die erste Zeile erhalten, die einen größeren Typ konvertiert (
'7'
ist ein int) in einen kleineren Typ (char).– Jim Balter
16. März 2011 um 7:36 Uhr
Shakespeare
Verwenden Sie die ASCII zu Ganzzahl atoi()
Funktion, die einen String akzeptiert und in eine Ganzzahl umwandelt:
#include <stdlib.h>
int num = atoi("23"); // 23
Wenn die Zeichenfolge eine Dezimalzahl enthält, wird die Zahl abgeschnitten:
int num = atoi("23.21"); // 23
Jim Balter
Ein char-Wert in C ist implizit in ein int konvertierbar. z.B, char c; ... printf("%d", c)
druckt den dezimalen ASCII-Wert von c
und int i = c;
setzt den ganzzahligen ASCII-Wert von c
in i
. Sie können es auch explizit mit konvertieren (int)c
. Wenn Sie etwas anderes meinen, z. B. wie man eine ASCII-Ziffer in eine Ganzzahl umwandelt, wäre das c - '0'
die implizit konvertiert c
zu einem int und subtrahiert dann den ASCII-Wert von '0'
nämlich 48 (in C Zeichenkonstanten wie z '0'
sind aus historischen Gründen vom Typ int, nicht char).
Du meinst den ASCII-Ordinalwert? Versuchen Sie Typumwandlung wie diese:
int x = 'a';
Gemeinschaft
Wie alle anderen Ihnen gesagt haben, können Sie es direkt konvertieren … ES SEI DENN, Sie meinten etwas wie “Wie kann ich ein erweitertes ASCII-Zeichen in seinen UTF-16- oder UTF-32-Wert konvertieren?”. Dies ist eine VÖLLIG andere Frage (mindestens so gut). Und eines ziemlich schwierig, wenn ich mich recht erinnere, wenn Sie nur “reines” C verwenden. Dann könnten Sie hier anfangen: https://stackoverflow.com/questions/114611/what-is-the-best-unicode-library- für-c/114643#114643
(Für ASCII Extended meine ich eine der vielen “Erweiterungen” des ASCII-Satzes. Die 0-127 Zeichen des Basis-ASCII-Satzes sind direkt in Unicode konvertierbar, während die 128-255 es nicht sind.). Zum Beispiel ISO_8859-1 http://en.wikipedia.org/wiki/ISO_8859-1 ist eine 8-Bit-Erweiterung des 7-Bit-ASCII-Satzes oder der (ziemlich berühmten) Codepages 437 und 850.
-
ASCII-Zeichen (0-127) in jedem UTF-Format sind identisch mit ihrer ganzzahligen Darstellung.
– Chris Lutz
16. März 2011 um 7:24 Uhr
-
@Chris Aber mindestens 50% der Male, wenn jemand von ASCII spricht, meint er “ASCII Extended” … Aber ja, es wäre interessant, diesen Hinweis in die Antwort aufzunehmen. Vielen Dank.
– xanatos
16. März 2011 um 7:27 Uhr
-
ASCII-Zeichen haben einen Wertebereich von 0 bis 127, daher ist die Konvertierung in UTF-16 oder UTF-32 nur eine Umwandlung. Vielleicht meinen Sie etwas anderes, z. B. die Konvertierung verschiedener Byte-Codierungen wie UTF-8, ISO 8859-1 usw.
– Jim Balter
16. März 2011 um 7:28 Uhr
-
“ASCII erweitert” ist ein schlechter Begriff, der keinen eindeutigen Verweis oder auch nur einen nahen hat; Es gibt zahlreiche “erweiterte” ASCII-Codierungen oder “Codepages”, wie einige proprietäre kommerzielle Anbieter sie nennen.
– Jim Balter
16. März 2011 um 7:31 Uhr
C hat keinen Datentyp “ASCII-Zeichen”, daher ist diese Frage bedeutungslos.
– Jim Balter
10. Januar 2019 um 1:36 Uhr
Dies ist ein so zweideutiges Thema, dass 1) ‘1’ bis 1 ODER 2) ‘@’ bis 64 bedeutet. Ich suche den ersten
– Vincent Thorpe
26. März 2019 um 23:34 Uhr