从键盘上输入一个长整型数,将最高8位与最低8位、次高8位与次低8位交换,以十六进制形式输出交换后的结果。

从键盘上输入一个长整型数,将最高8位与最低8
位、次高8位与次低8位交换,以十六进制形式输出交换
后的结果。

通过左右移分解出四个字节,再左右移进行组合

unsigned int a;
scanf("%u",&a);
unsigned char n1,n2,n3,n4;
n1 = a>>24;
n2 = a<<8;
n2 = n2>>24;
n3 = a<<16;
n3 = n3>>24;
n4 = a & 0xff;
a = 0;
a = n4 << 24 + n3 << 16 + n2<<8 + n1;
printf("%x",a);

能不能理解看自己吧


#include <stdio.h>

int main()
{
    long test;
    scanf("%ld", &test);
    unsigned char *chrPtr = (unsigned char *)&test;
    printf("0x%02x%02x%02x%02x\n", chrPtr[0], chrPtr[1], chrPtr[2], chrPtr[3]);

    return 0;
}