■ 10進数を16進数に変換して出力

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


DAIMON 2008/02/04(月) 11:24:51
10進数(Xの値)での数値を16進数に変換して、下記のようにXの値を〇〇〇のところに入力したいのですが、どうしたらよいのでしょうか?

X = 定数1+(数値1 - 数値2) * 定数2

wData[2] = 0x〇〇〇;

何分、初心者で申し訳ありませんが、よろしくお願いいたします。

ん? 2008/02/04(月) 11:42:22
wDataやXの型宣言は何?

maru 2008/02/04(月) 13:11:19
> wDataやXの型宣言は何?
というより、何をやりたいのか、さっぱり分からん。
タイトルは「10進数を16進数に変換して出力」で、やりたいことは「入力したい」?
定数1、2と数値1、2の違いは何? 数値1,2がコンパイル時に値が決ま
っているなら、それも定数だと思うけど、定数でないとすると「〇〇〇のとこ
ろに入力したい」が分からんし。

以下、質問を勝手に解釈。

Xの値をwData[2]に入力するなら
wData[2] = X;
でいい。

定数1、数値1、数値2、定数2が定まった値(定数値)ならば、
wData[2] = 定数1+(数値1 - 数値2) * 定数2;
とそのまま書いても可。定数1、数値1、数値2、定数2が10進数、
16進数であっても、wData[2]には計算結果が代入される。

また、どうしても
wData[2] = 0xABCD;
のように直接書きたいのであれば、電卓([スタート]-[プログラム]-
[アクセサリ]-[電卓])を使用して、計算した後、"16進"を選択すれば
16進表記にしてくれる。

maru 2008/02/04(月) 13:19:04
> また、どうしても
> wData[2] = 0xABCD;
> のように直接書きたいのであれば、電卓([スタート]-[プログラム]-
> [アクセサリ]-[電卓])を使用して、計算した後、"16進"を選択すれば
> 16進表記にしてくれる。
補足。
"電卓"は[表示]メニューで[関数電卓]モードで使用のこと。

# でも、16進変換は今も机から関数電卓を取り出してしまう私。

ななし 2008/02/05(火) 01:35:22
蛇足ながら私も回答。

Cの変数は大別して整数型・少数型・文字型の3つに分かれますが、整数型に10進とか16進のような区別はありません。
int a;
a = 10;
a = 0x0a;
はどちらも同じくaに10が代入されます。10と0x0aのどっちを使うかはプログラマーの自由でどっちを使っても結果は同じです。

ただし以下のようにaを文字型に変換して表示するような場合は違いは出てきます。たぶんそこら辺に誤解があると思います。
printf("%d",a);
printf("%x",a);

夏みかん 2008/02/06(水) 11:28:24
> 10進数(Xの値)での数値を16進数に変換して、下記のようにXの値を〇〇〇のところに入力したいのですが、どうしたらよいのでしょうか?
これは定数式と解釈してよいかな。
だとするとそのまま 0x をつけずに代入すればいいじゃん。

wData[2] = 定数1+(数値1 - 数値2) * 定数2;

これでOK
C言語では8進表記、10進表記、16進表記などできるが整数型の内部では
2進表現されているから 0x なんぞつける必要性はないゎな。
分かるかいこの説明で。

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

Programming Library