it-swarm.com.de

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

Wie kann ich ein ASCII-Zeichen in ein int in C konvertieren?

15
node ninja

Wie wäre es mit:

int a_as_int = (int)'a';
18
rjnilsson

Suchst du das:

int c = some_ascii_character;

Oder einfach ohne Zuweisung konvertieren:

(int)some_aschii_character;
11
UmmaGumma

Verwenden Sie die FunktionASCIIto Integer atoi(), die eine Zeichenfolge akzeptiert und in eine Ganzzahl konvertiert:

#include <stdlib.h>

int num = atoi("23"); // 23

Wenn der String eine Dezimalzahl enthält, wird die Zahl abgeschnitten:

int num = atoi("23.21"); // 23
4
Shakespear

Ich stimme Ashot und Cwan zu, aber vielleicht konvertieren Sie eine Ascii-Chiffre wie '7' in ein Int wie 7? 

Dann richte ich ein: 

char seven = '7';
int i = seven - '0'; 

oder vielleicht erhalten Sie eine Warnung, 

int i = (int) (seven - '0'); 

</ strike> nach Kommentaren korrigiert, danke.

3
user unknown

Ein Zeichenwert in C ist implizit in ein int konvertierbar. Beispiel: char c; ... printf("%d", c) gibt den dezimalen ASCII - Wert von c aus und int i = c; setzt den ASCII - Integerwert von c in i. Sie können es auch explizit mit (int)c konvertieren. Wenn Sie etwas anderes meinen, z. B. wie eine ASCII - Ziffer in ein int konvertiert wird, wäre dies c - '0', das c implizit in ein int konvertiert und dann den ASCII - Wert von '0' subtrahiert, nämlich 48 ( In C sind Zeichenkonstanten wie '0' aus historischen Gründen vom Typ int und nicht von char.

2
Jim Balter

Sie meinen den Ordinalwert ASCII? Versuchen Sie, das folgende Casting durchzuführen:

int x = 'a';
1

Wie jeder andere Ihnen gesagt hat, können Sie es direkt konvertieren ... WENN Sie etwas wie "Wie kann ich ein ASCII Extended-Zeichen in den UTF-16- oder UTF-32-Wert konvertieren" bedeuten. Dies ist eine völlig andere Frage (eine mindestens so gut). Und eines ziemlich schwierig, wenn ich mich recht erinnere, wenn Sie nur "reines" C verwenden. Dann könnten Sie hier beginnen: https://stackoverflow.com/questions/114611/what-isthe-best-unicode- library-for-c/114643 # 114643

(Für ASCII Extended meine ich eine der vielen "Erweiterungen" des Sets ASCII. Die 0-127 Zeichen des Basis-Sets ASCII sind direkt in Unicode konvertierbar, während die 128- 255 sind nicht.). Zum Beispiel ist ISO_8859-1 http://en.wikipedia.org/wiki/ISO_8859-1 eine 8-Bit-Erweiterung des 7-Bit-Satzes ASCII oder der (ziemlich bekannten) Codepages 437 und 850 .

0
xanatos

Mit der C99-Standardbibliothek ist dies nicht möglich, es sei denn, Sie schreiben eine Map von Zeichenkonstanten manuell in den entsprechenden ASCII int-Wert.

Zeichenkonstanten in C wie 'a' sind nicht unbedingt ASCII-Zeichen.

C99 gibt nur einige Garantien bezüglich dieser Konstanten ab, z. dass Ziffern zusammenhängend sind .

Das Wort ASCII erscheint nur im C99 N1256-Standardentwurf in den Fußzeilennotizen und in der Fußzeile (173):

In einer Implementierung, die den Sieben-Bit-US-Zeichensatz ASCII verwendet, sind die Druckzeichen die deren Werte von 0x20 (Leerzeichen) bis 0x7E (Tilde) liegen; Die Steuerzeichen sind diejenigen, deren Werte liegen zwischen 0 (NUL) bis 0x1F (US) und dem Zeichen 0x7F (DEL).

impliziert, dass ASCII nicht die einzige Möglichkeit ist