上两个六角形将视觉转换和分开2个字节六角形,上两个角色,下两个十六进制在C 中转到第二个Charater



我在

中具有无符号的int值
u_int_variable = 43981; // This is equal to ABCD in HEX

我可以使用

将其打印为在十六进制中的控制器
printf("Value in Hex is %X", u_int_variable);
// Output : Value in Hex is ABCD

我如何转换和分开,以使

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

或,对于> 32位unsigned ints绝对安全:

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

作为变体:

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

关于位操作的好第一文章在这里

我为您提供使用 bit-fields unions ,解决方案将看起来像这样:

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

最新更新