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


菊次郎  2006-06-08 01:56:13  No: 62061

初めまして、初めて質問させていただきます。よろしくお願いします。
int型の変数に格納してある10進数を16進数に変換して別のint型の変数に格納し、表示させたいのですが、どのようにすれば良いのでしょうか?どうぞ教えてください。言語はc++です。


Blue  2006-06-08 02:00:06  No: 62062

結局 int型 の変数に入れてしまえば、16進表記だろうが、10進表記だろうが
区別はなくなります。

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

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


菊次郎  2006-06-08 02:26:22  No: 62063

すません!間違えました。char型の変数にint型の変数に格納してある10進数を16進数に変換して格納でした。お手数をかけて申し訳ありませんが、もう一度教えてください。よろしくお願いします。


Blue  2006-06-08 02:44:02  No: 62064

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-08 02:48:56  No: 62065

> 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-08 02:52:11  No: 62066

> sprintf( buf, "%02X", m );
sprintf( buf, "%02X", n );

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


菊次郎  2006-06-08 03:19:09  No: 62067

ありがとうございます、お二方。できました!無知な自分のためにご親切に説明していただきありがとうございました。


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

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






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