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

  • 本文关键字:设置 var char 右边 int c
  • 更新时间 :
  • 英文 :


例如,我有一个 64 位 var a 和一个 8 位字符b

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

我想让a成为0x1234567890123478

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

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

??

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

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

仅此而已。括号中的部分清除了a的最不重要的CHAR_BIT,然后可以用b按位或

最新更新