2011-01-04 10 views
2

それでは、例えば 'a'という文字を97(ASCIIテーブルなど)に変換し、67を 'a'に変換します。 私は実際に数学の負荷をかけて手紙に書いて、それを2進数として扱うので、移行が必要です。 しかし、特殊文字の場合はうまく動作しません。intに特殊文字を入力して戻す

char c = 'ÿ'; 
int i = int(c); 
wchar_t wTemp = static_cast<wchar_t>(i); 
wchar_t* w = &wTemp; 
String^ newI = gcnew String(w); 

このシンボルは、私が画像で見つけたランダムなものです(読み取る必要がある文字の種類)。まったく別のシンボルとして出てきます。なぜ、または何をすべきか分かりません。

答えて

1

0x7f(127)を超える文字は、おそらく負の整数値に変換されます。たぶん、符号なしにcを変更します。私はそれを実行しなかったものの

unsigned char c = 'ÿ'; 
int i = c; 
+0

これはこれでした!私は、charがintと同じ境界を持つと仮定しました。これは、私が仮定する貧弱な仮定です。ありがとう! :D –

+0

である。ソースコードファイルのエンコーディングとUnicodeの間の変換は無視しないでください。 wchar_t c = L'ÿ 'はより良い確率を与えます。 –

1

あなたのコードは、私にはかなり右を見ていません。ここから変換することとwchar_tにどのようにMSDNから良い例です:

http://msdn.microsoft.com/en-us/library/ms235631(v=vs.80).aspx

私は「特別な」文字について何か特別なことがあると信じていません。

+0

これは私が使ったものです。しかし、String()はwchar_t *を必要としますが、static_castはwchar_tを出力するので、どのようにアドレスを与えるか分かりましたか? –

関連する問題