C语言 一个32位数怎么转化成四个八位数

2024-11-06 05:19:34
推荐回答(4个)
回答1:

很简单的事情,一位16进制代表4位二进制,所以你只要把32位数转化成4个2位的16进制数就可以了,当然首先要先把32位的数转看成16进制表示,不需要你去转化,因为系统对数据的处理,这里我们以简单的整型数据举例,比如0xAAFCE8C9,你要转化成4个16进制数,
0xAA,0xFC,0xE8,0xC9

int main()
{
unsigned long long x=0xAAFCE8C9;
int a,b,c,d;

a=b=c=d=0xFF;
a&=x;
b&=x>>8;
c&=x>>16;
d&=x>>24;
printf("%x,%x,%x,%x\n",a,b,c,d);
return 0;
}
取数据位就是和1相与&,这样你需要的位被保留,不需要的位置0,就可以分离这个32位的数了

回答2:

移位操作符 美其名约 移位
是指以2进制位为单位进行操作
对应你的应该是b[1] = (data >> 8) & 0xff;
b[2] = (data >> 16) & 0xff;
b[3] = (data >> 24) & 0xff;

回答3:

用c语言的共用体把它分解,自己考虑。

回答4:

0x11223344表示的是16进制,一共32位11-->00010001,22--->00100010.。。。。。。
你移位的单位错了,可以是可以运行,但结果一定不正确