web-dev-qa-db-ja.com

CでASCII文字をintに変換する方法

ASCII文字をCのintに変換するにはどうすればよいですか?

16
node ninja

どうですか:

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

これを探していますか:

int c = some_ascii_character;

または、割り当てなしで変換するだけです:

(int)some_aschii_character;
12
UmmaGumma

[〜#〜] ascii [〜#〜] to Integer atoi()関数を使用して、文字列を受け取り、整数に変換します。

#include <stdlib.h>

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

文字列に小数が含まれる場合、数値は切り捨てられます。

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

AshotとCwanには同意しますが、「7」のようなASCII暗号を7のようなintに変換したいですか?

それから私は再編します:

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

または、警告が表示される場合があります。

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

コメント後に修正、ありがとう。

3
user unknown

Cのchar値は暗黙的にintに変換可能です。たとえば、char c; ... printf("%d", c)cの10進数のASCII値を出力し、int i = c;cのASCII整数値をi(int)cを使用して明示的に変換することもできます。 ASCII数字をintに変換する方法など、何か他のものを意味する場合、それはc - '0'になります。これは、暗黙的にcをintに変換し、ASCII '0'の値、つまり48(Cでは、'0'などの文字定数は、歴史的な理由からchar型ではなくint型です)。

2
Jim Balter

ASCII ordinal value?という意味ですか?次のような型キャストを試してください。

int x = 'a';
1

他の皆が言ったように、あなたはそれを直接変換することができます...「ASCII拡張文字をUTF-16またはUTF-32値に変換する方法」のようなものを意味しない限り。これはまったく異なる質問です(少なくとも1つは良い質問です)。そして、私が正しく覚えている場合、「純粋な」Cのみを使用している場合、非常に困難です。次に、ここから開始できます: https://stackoverflow.com/questions/114611/what-is-the -best-unicode-library-for-c/114643#114643

(ASCII Extendedの場合、ASCIIセットに対する多くの「拡張」の1つを意味します。ベースASCIIセットの0〜127文字は、直接に変換可能です。 Unicode、128-255はそうではありません。)たとえば、ISO_8859-1 http://en.wikipedia.org/wiki/ISO_8859-1 は、7ビットASCIIセットの8ビット拡張です。または(非常に有名な)コードページ437および850。

0
xanatos

C99標準ライブラリでは、文字定数から対応するASCII int値。

'a'などのCの文字定数は、ASCIIであるとは限りません。

C99は、これらの定数についていくつかの保証のみを行います。その 数字は連続している

Word ASCIIは、フッターノート、およびフッターノート173の C99 N1256標準ドラフト にのみ表示されます。

7ビットUS ASCII文字セットを使用する実装では、印刷文字は値が0x20(スペース)から0x7E(チルダ)にある文字であり、制御文字は値がある文字です0(NUL)から0x1F(US)、および文字0x7F(DEL)。

ASCIIが唯一の可能性ではないことを意味する