|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我想把一个int类型的4个字节中的高4位和低4位分别输出。所以弄了个char类型的指针指向这个数,想依次输出4个字节的高4位和低4位。但是找不出下面代码有什么逻辑bug
#include <stdio.h>
int main()
{
long i;
int j;
int array1[4],array2[4];
printf("请输入i\n");
scanf("%d",&i);
char *p=(char *)&i;
for(j=0;j<4;j++) {
array1[j]=(*(p+j)>>4);
}
for(j=0;j<4;j++)
{
array2[j]=((*(p+j)<<4)>>4);
}
printf("高四位分别是:\n");
for(j=0;j<4;j++)
{
printf("%x ",array1[j]);
}
printf("\n低四位分别是:\n");
for(j=0;j<4;j++)
{
printf("%x ",array2[j]);
}
return 0;
}
int main()
{
long i;
int j;
int array1[4], array2[4];
printf("请输入i\n");
scanf("%d", &i);
char *p = (char *)&i;
for (j = 0; j<4; j++)
{
printf("%x ", (p[j]&0xff));
}
return 0;
}
这样可以直接输出int型的4个字节,但是你的要求是高四位,第四位,需要再把字节开成两个16进制位
|
|