スペース、タブ、改行などを含む文字の ASCII 値を返す関数が必要です...
同様に、16 進数、10 進数、2 進数を変換する関数は何ですか?
char c;
int ascii = (int) c;
s2.data[j]=(char)count;
charは整数であり、変換関数は必要ありません。
16 進数、2 進数、または 10 進数表現を使用して、整数を文字列として表示する関数を探しているのではないでしょうか。
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"
バイナリに変換する組み込み関数はありません。自分で巻く必要があります。
コード内の文字の ASCII 値を取得する場合は、文字を引用符で囲みます。
char c = 'a';
内部表現と出力を混同している可能性があります。文字の値を確認するには:
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 進数にはマニピュレータはありません。
16進数と2進数に関する限り、これらは整数の単なる表現です。おそらく必要なのは、printf("%d",n) と printf("%x",n) のようなものです。最初は 10 進数を出力し、2 番目は同じ数値の 16 進数を出力します。あなたがやろうとしていることを明確にしてください -