2016-04-09 4 views
0

以下のものがあるとします。お互いに隣り合う16進数値につけて表示する方法

int main(){ 
    int x = 0x02; 
    int y = 0x72; 
    //Figure out how to put 0x02 and 0x72 together to make 0x272. 
} 

コメントによると、16進値をどのようにまとめるかを知りたいと思います。単純な数値の加算ではありません。

このコードは、はるかに大きなプロジェクトの一部ですが、私はこの問題を解決する方法を知りたいと思います。

+3

このように、1つの整数値を作るには、 'x'は上位バイト、' y'は下位バイトですか? bitwise * shift *と* or *演算子について読む。 –

+0

数値を逆にしたい場合は、答えを0x722または0x7202にしますか? –

+0

あなたのマシンのintサイズは何ですか? 8,16,32,64? –

答えて

1

同様:

int main(){ 
    int x = 0x02; 
    int y = 0x72; 
    int z = x << 8 | y; 
    printf("0x%x\n", z); 
    z = y << 8 | x; 
    printf("0x%x\n", z); 
} 

出力:

0x272 
0x7202 

2

はい、単純な加算の問題です。なぜなら、乗算は簡単な追加が多いからです。 :-)

私は乗算を使用して(と符号なし整数を使用して)お勧め:

unsigned int x = 0x02; 
unsigned int y = 0x72; 
unsigned int combined = (x * 256) + y; 
// Or the equivalent 
unsigned int result = (x * 0x100) + y; 

このソリューションは、プラットフォームに依存しないで、Endinannessには依存しません。

関連する問題