10進数や16進数をASCIIの文字に変換するには?

解決


螺旋  2006-10-29 19:22:30  No: 63440  IP: 192.*.*.*

65(10進数)はASCII文字で表現するとAになりますが、この変換を行うCかC++の関数をご存知の方いらっしゃいますか?できれば、16進数からなどのASCII文字への変換もできると良いのですが。初歩的な質問ですが、教えて下さい。

Microsoft Visual C++

編集 削除
螺旋  2006-10-29 19:42:41  No: 63441  IP: 192.*.*.*

reinterpret_cast<char*>(&var) で自己解決しました。お騒がせしました。

編集 削除
YuO  2006-10-30 11:12:41  No: 63442  IP: 192.*.*.*

[[解決]]となっているのですが……。

char型の値65を単なる数値と見なすか文字'A'と見なすかはプログラム次第です。
また,他の型であっても単にchar型に代入してやれば,'A'と見なすことは可能です。
# int型のまま文字扱いすることも多々ありますが。

編集 削除
Blue  2006-10-30 12:01:45  No: 63443  IP: 192.*.*.*

>reinterpret_cast<char*>(&var)
ってカナリきわどいことやっているっぽい。

たとえば、

int var = 65;

(sizeof(int) = 4のとき)
の場合、VCだから(Windowsだから?)バイトオーダーが 0x41 0x00 0x00 0x00 となっているため
あたかも'\0'で終端している文字列として扱えるだけです。

また

char var = 65;

である場合、メモリを不正に参照する可能性があります。


ですので、sprintf等で格納するか、

char s[ 4 ];
s[ 0 ] = ( char )var;
s[ 1 ] = '\0';

のように代入したほうがよいのではないでしょうか。

編集 削除