我正在将num1
的第一个字节与num2
的最后一个字节交换,我尝试过但通过((num1>>8*n)&0xff)
获得了32位int的特定字节。
最佳答案
尝试做这个
long num1 = 0x000000ff;
long num2 = 0xcc000000;
long temp = num1;
num1 = (((unsigned long)num1) & 0xffffff00) | ((((unsigned long)num2) >> 24) & 0x000000ff);
num2 = (((unsigned long)num2) & 0x00ffffff) | ((((unsigned long)temp) << 24) & 0xff000000);
printf ("num1 : %#010lX\n", num1);
printf ("num2 : %#010lX\n", num2);
使用掩码时,我们将覆盖32位值的所需部分,并消除有符号值的负面影响,而不是按位或来连接部分值。
结果:
关于c - 如何在C中将num1的第一个字节与num2的最后一个字节交换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34464268/