2016-04-09 12 views
0

görüntülendim.Yan yana altıgen değerlere nasıl bağlanır ve ardından

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

Yorumun söylediği gibi, hex değerlerinin nasıl birleştirileceğini öğrenmek istiyorum. Sayıların basit bir şekilde eklenmemesi.

Bu kod, daha büyük bir projenin bir parçası ve bu sorunu nasıl çözeceğimi merak ediyorum.

+3

Yani, x baytlık bayt ve düşük bayt ile tek bir tam sayı yapmak ister misiniz? Bitsel * vardiya * ve * veya * operatörleri hakkında bilgi edinin. –

+0

Numaraları başka bir yoldan koymak istediğinizde, cevabın 0x722 veya 0x7202 olmasını ister misiniz? –

+0

Makinenizin int büyüklüğü nedir? 8,16,32,64? –

cevap

1

gibi:

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); 
} 

Çıktı:

0x272 
0x7202 

?

2

Evet, çarpım çok sayıda basit ekleme olduğundan, basit bir ekleme meselesidir. :-)

Ben çarpma işlemi kullanılarak (ve işaretsiz tamsayılar kullanarak) öneririz:

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

Bu çözüm platformu bağımsızdır, Endinanness bağlı değildir.