我需要交换每两个相邻位作为通用操作,这将对给定的每个变量类型执行此操作。
我想到了每个字节所需的掩码和操作:
(var & 0x55) << 1 | (var & 0xAA) >> 1
但是我如何让这个应用程序让我们说一个整数?
我是否需要使用上述掩码创建一个 sizeof(int)
unsigned char
数组并以这种方式应用操作?
最佳答案
您可以逐字节执行此操作(与逐个字符相同)。
例如:
int n = 0xAA55A55A;
unsigned char *p = (unsigned char *) &n;
for (; p < (unsigned char *) &n + sizeof(n); p++)
*p = (*p & 0x55) << 1 | (*p & 0xAA) >> 1;
关于c - 交换未知变量类型的每两位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19034541/