Wie konvertiert man ein ASCII-Zeichen in ein int in C

Lesezeit: 3 Minuten

Benutzer-Avatar
Knoten-Ninja

Wie kann ich ein ASCII-Zeichen in C in ein Int umwandeln?

  • 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

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-Avatar
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

Benutzer-Avatar
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

Benutzer-Avatar
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 cund 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';

Benutzer-Avatar
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

1372520cookie-checkWie konvertiert man ein ASCII-Zeichen in ein int in C

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy