17

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

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

4

5 に答える 5

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

char整数であり、変換関数は必要ありません。

16 進数、2 進数、または 10 進数表現を使用して、整数を文字列として表示する関数を探しているのではないでしょうか。

于 2009-05-10T17:28:14.787 に答える
11

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"

バイナリに変換する組み込み関数はありません。自分で巻く必要があります。

于 2009-05-10T17:29:58.713 に答える
5

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

char c = 'a';
于 2009-05-10T17:29:57.090 に答える
2

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

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 進数 (10 進数) のマニピュレータがありますが、残念ながら 2 進数にはマニピュレータはありません。

于 2009-05-10T17:30:43.317 に答える
0

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

于 2009-05-10T17:31:29.303 に答える