web-dev-qa-db-ja.com

ASCII文字の値を返す関数はありますか?(C ++)

スペース、タブ、改行など、文字のASCII文字の値を返す関数が必要です...

同様に、16進数、10進数、2進数を変換する関数は何ですか?

13
user98188
char c;
int ascii = (int) c;
s2.data[j]=(char)count;

Char is整数。変換関数は必要ありません。

たぶんあなたは、整数を文字列として表示する関数を探しています-16進、2進または10進表現を使用していますか?

25
gimel

ASCII値を取得するための関数は必要ありません-(暗黙の)キャストによって整数に変換するだけです:

int x = 'A';  // x = 65
int y = '\t'; // x = 9

数値を16進数または10進数に変換するには、printfファミリーの任意のメンバーを使用できます。

char buffer[32];  // make sure this is big enough!
sprintf(buffer, "%d", 12345);  // decimal: buffer is assigned "12345"
sprintf(buffer, "%x", 12345);  // hex: buffer is assigned "3039"

バイナリに変換する組み込み関数はありません。自分でロールバックする必要があります。

8
Adam Rosenfield

コード内の文字のASCII値を取得する場合は、文字を引用符で囲みます

char c = 'a';
3
RC Howe

内部表現と出力を混同している可能性があります。文字の値を確認するには:

char c = 'A';
cout << c << " has code " << int(c) << endl;

同様に16進値-すべての数値は16進数であるため、出力の問題です。

int n = 42;
cout << n << " in hex is " << hex << n << endl;

出力ステートメントの「hex」は、C++マニピュレーターです。 16進数と10進数(dec)用のマニピュレーターがありますが、残念ながらバイナリ用ではありません。

2
anon

16進数と2進数については、これらは単なる整数の表現です。おそらく望んでいるのは、printf( "%d"、n)やprintf( "%x"、n)のようなものです。最初は10進数を出力し、2番目は同じ数値の16進数バージョンを出力します。あなたがやろうとしていることを明確にしてください-

0
Jeff