65(10進数)はASCII文字で表現するとAになりますが、この変換を行うCかC++の関数をご存知の方いらっしゃいますか?できれば、16進数からなどのASCII文字への変換もできると良いのですが。初歩的な質問ですが、教えて下さい。
Microsoft Visual C++
reinterpret_cast<char*>(&var) で自己解決しました。お騒がせしました。
[[解決]]となっているのですが……。
char型の値65を単なる数値と見なすか文字'A'と見なすかはプログラム次第です。
また,他の型であっても単にchar型に代入してやれば,'A'と見なすことは可能です。
# int型のまま文字扱いすることも多々ありますが。
>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';
のように代入したほうがよいのではないでしょうか。
ツイート | ![]() |