2012-11-09 39 views

回答

2
uhex = static_cast<unsigned char>(u_int_variable >> 8); 
lhex = static_cast<unsigned char>(u_int_variable & 0xFF); 
(十六進制)ABCD

或者,成爲> 32位無符號整數絕對安全:

uhex = static_cast<unsigned char>((u_int_variable >> 8) & 0xFF); 
1

爲Variant:關於位運算

unsigned char uhex, lhex; 
lhex = static_cast<unsigned char>(u_int_variable & 0xFF); 
uhex = static_cast<unsigned char>((u_int_variable >> 8) & 0xFF); 

良好的第一深度文章是here

1

我給你使用位字段工會,解決方案看起來像這樣:

struct hex 
    { 
     unsigned int lhex : 8; // upper and lower part alignement are system dependent 
     unsigned int uhex : 8; 
    }; 

    union number 
    { 
     number(int val): m_val(val){}; 
     void lhex(void) {printf("lhex %X", this->num.lhex);}; 
     void uhex(void) {printf("uhex %X", this->num.uhex);}; 
     int m_val; 
     hex num; 
    }; 

    number n(43981); 
    n.lhex(); 
    n.uhex(); 
相關問題