■ 10進数を16進数にするには?

[Visual C++ Q & A 掲示板] [過去ログの一覧]


菊次郎 [E-Mail] 2006/06/07(水) 16:56:13 <211.7.92.189>
初めまして、初めて質問させていただきます。よろしくお願いします。
int型の変数に格納してある10進数を16進数に変換して別のint型の変数に格納し、表示させたいのですが、どのようにすれば良いのでしょうか?どうぞ教えてください。言語はc++です。

Blue 2006/06/07(水) 17:00:06 <192.51.44.44>
結局 int型 の変数に入れてしまえば、16進表記だろうが、10進表記だろうが
区別はなくなります。

文字列として表記するときには printf(sprintf)関数で表示できます。

int n, m;
n = 10;
m = n;
printf( "n = %d\n", n );
printf( "m = %02X\n", m );

菊次郎 2006/06/07(水) 17:26:22 <211.7.92.189>
すません!間違えました。char型の変数にint型の変数に格納してある10進数を16進数に変換して格納でした。お手数をかけて申し訳ありませんが、もう一度教えてください。よろしくお願いします。

Blue 2006/06/07(水) 17:44:02 <192.51.44.49>
char型の変数ですか?char型文字列変数ではなくて?

char型の場合int型からの代入になるので当然情報落ちします。

int n;
char c
n = 10;
c = ( char )n;
printf( "n = %d\n", n );
printf( "c = %02X\n", c );


一応文字列のヤツも載せておきます。
sprintfを使います。

int n;
char s[ 16 ];
n = 10;
sprintf( s, "%02X", n );

printf( "n = %d\n", n );
printf( "s = %s\n", s );


ついでに逆も載せておきます。strtolを使います。

char s[] = "0A";
int n;
n = ( int )strtol( s, NULL, 16 );

printf( "n = %d\n", n );
printf( "s = %s\n", s );

KING・王 2006/06/07(水) 17:48:56 <202.219.50.88>
> char型の変数にint型の変数に格納してある10進数を16進数に変換して格納でした。

char型の配列に、文字列として出力と勝手に解釈しています。
#単純にchar型の場合、データによってはオーバーフロー等が起こり、
#データが切り捨て等が必要になるので、勝手に意訳。

Blueさんの提示されているのを応用して、出力先を画面からchar型の配列にするだけです。

int n = 10;
char buf[8] = {0x00};
sprintf( buf, "%02X", m );

printf( "%s\n", buf );

#未テストです。

KING・王 2006/06/07(水) 17:52:11 <202.219.50.88>
> sprintf( buf, "%02X", m );
sprintf( buf, "%02X", n );

#Blueさんとかぶった上にtypoまで。。。orz

菊次郎 2006/06/07(水) 18:19:09 <211.7.92.189>
ありがとうございます、お二方。できました!無知な自分のためにご親切に説明していただきありがとうございました。

毎週金曜日はポイント最大3倍!さらに4倍のチャンスも!

Programming Library