合計 昨日 今日

16進数(数値から10進数(数値)変換

[このトピックは解決済みです]

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: たけのこ
[URL]
Date: 2017年5月17日(水) 18:03
No: 1
(OFFLINE)

 16進数(数値から10進数(数値)変換

unsigned char hex_arry[3];
unsigned char dec_arry[3];

hex_arry[0] = 0x0D;
hex_arry[1] = 0x37;
hex_arry[2] = 0x1E;

/*
ここで10進数変換
*/
dec_arry[0] = hex_arry[0];
dec_arry[1] = hex_arry[1];
dec_arry[2] = hex_arry[2];

hex_arryに格納された16進数を10進数変換してdec_arryに入れたいです。

ここでは、
dec_arry[0]は、13
dec_arry[1]は、55
dec_arry[2]は、30
になるようにしたいです。

ご教授のほどよろしくお願いします。

Name: たけのこ
[URL]
Date: 2017年5月17日(水) 18:29
No: 2
(OFFLINE)

 Re: 16進数(数値から10進数(数値)変換

コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
unsigned char hex_arry[3];
unsigned char dec_arry[3];
 
hex_arry[0] = 0x0D;
hex_arry[1] = 0x37;
hex_arry[2] = 0x1E;
 
/*
ここで10進数変換
*/
dec_arry[0] = hex_arry[0];
dec_arry[1] = hex_arry[1];
dec_arry[2] = hex_arry[2];


hex_arryに格納された16進数を10進数変換してdec_arryに入れたいです。

ここでは、
dec_arry[0]は、13
dec_arry[1]は、55
dec_arry[2]は、30
になるようにしたいです。

ご教授のほどよろしくお願いします。

コードで囲ってなかったため追記します。すみません

Name: purin52002
[URL]
プログラマー(26,446 ポイント)
Date: 2017年5月17日(水) 19:56
No: 3
(OFFLINE)

 Re: 16進数(数値から10進数(数値)変換

質問に質問するのもおかしいですが、
変数に10進や16進の数値って格納できるんですか?
内部的には2進の数値が入っていて、表示するときに10進にしているだけだと思っていたんですが、、、
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

Name: Takuya-code
[URL]
Date: 2017年5月17日(水) 20:52
No: 4
(OFFLINE)

 Re: 16進数(数値から10進数(数値)変換

>>purin52002さん
格納できます。
コード[C]: 全て選択
1
2
3
4
5
unsigned char hex_value = 0xFF; // 16進数のFF(10進数の255)がこの変数に格納される
unsigned char dec_value = 84; // 10進数の84(16進数の54)がこの変数に格納される
 
printf("%d", hex_value); // "255" (16進数=FF)
printf("%x", dec_value); // "54" (10進数=84)


>>たけのこさん
hex_aryの各要素の値(0x0D, 0x37, 0x1E)は、
それぞれ10進数で表すと(13, 55, 30)です。
なので、そのまま代入すれば同じ値となります。
printf関数のフォーマット指定子を"%d"にすれば10進数で、"%x"(または"%X")にすれば16進数で
(整数型の変数に代入した)値を表示してくれます。
以下一例
※説明が間違っていたらすみません
コード[C]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
// main関数
int main(void){
    // 16進数で値を格納する配列
    unsigned char hex_ary[3];
 
    // 10進数で値を格納する配列
    unsigned char dec_ary[3] = { 0 };
 
    // 16進数の配列に値を格納
    hex_ary[0] = 0x0D;
    hex_ary[1] = 0x37;
    hex_ary[2] = 0x1E;
 
    // 値の表示(16進表示, 10進表示)
    for (int i = 0; i < 3; i++){
        dec_ary[i] = hex_ary[i];
        printf("hex_ary[%d]=0x%02X dec_ary[%d]=%d \n", i, hex_ary[i], i, hex_ary[i]);
    }
 
    return 0;
};

出力結果は
hex_ary[0]=0x0D dec_ary[0]=13
hex_ary[1]=0x37 dec_ary[1]=55
hex_ary[2]=0x1E dec_ary[2]=30

Name: たけのこ
[URL]
Date: 2017年5月18日(木) 09:05
No: 5
(OFFLINE)

 Re: 16進数(数値から10進数(数値)変換

[解決!]

>>Takuya-codeさん

回答ありがとうございます。

printf関数の"%d"や"%x"を使えば一瞬で変換出来るのですね!
勉強になりました。ありがとうございます。

解決にさせていただきます。


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[15人]