如何将64位int的最右边8位设置为char var?

时间:2017-11-15 06:57:33

标签: c

例如,我有一个64位变量a和一个8位变量b

unsigned long long a = 0x1234567890123456;
unsigned char b = 0x78;

我希望a成为0x12345678901234 78

我希望a的最右边8位设置为b,并保持56位不变,我该怎么办?

a = a & (0xFFffFFffFFffFFff | b); //is this correct?

...

1 个答案:

答案 0 :(得分:6)

limits.h中定义了一个有用的宏,可以帮助它变得可移植。这是CHAR_BIT

a = ((a >> CHAR_BIT) << CHAR_BIT) | b;

就是这样。括号中的部分清除了CHAR_BIT中最不重要的a,然后可以使用b进行按位。