我正在将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的最后一个字节交换?-LMLPHP

关于c - 如何在C中将num1的第一个字节与num2的最后一个字节交换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34464268/

10-12 16:05