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

解決


螺旋  2006-10-30 04:22:30  No: 63440

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

Microsoft Visual C++


螺旋  2006-10-30 04:42:41  No: 63441

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


YuO  2006-10-30 20:12:41  No: 63442

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

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


Blue  2006-10-30 21:01:45  No: 63443

>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';

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加