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

例如:intdata=0x11223344;charb[4];想让b[0]=44;b[1]=33;b[2]=22;b[3]=11;为什么b[0]=data&0xff;b[... 例如:int data = 0x11223344; char b[4];
想让 b[0] = 44; b[1] = 33; b[2] = 22; b[3] = 11;

为什么b[0] = data & 0xff; b[1] = (data >> 2) & 0xff; b[2] = (data >> 4) & 0xff; b[3] = (data >> 6) &0xff
不行
展开
 我来答
刀无极啊
推荐于2018-02-27 · TA获得超过3769个赞
知道大有可为答主
回答量:2960
采纳率:85%
帮助的人:956万
展开全部
很简单的事情,一位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位的数了
tonydelwee
推荐于2017-11-24 · TA获得超过672个赞
知道小有建树答主
回答量:395
采纳率:0%
帮助的人:409万
展开全部
移位操作符 美其名约 移位
是指以2进制位为单位进行操作
对应你的应该是b[1] = (data >> 8) & 0xff;
b[2] = (data >> 16) & 0xff;
b[3] = (data >> 24) & 0xff;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a1012144015
2015-05-16 · TA获得超过6415个赞
知道大有可为答主
回答量:9038
采纳率:40%
帮助的人:1363万
展开全部
移位操作符 美其名约 移位
是指以2进制位为单位进行操作
对应你的应该是b[1] = (data >> 8) & 0xff;
b[2] = (data >> 16) & 0xff;
b[3] = (data >> 24) & 0xff;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天空之城iot
2011-02-28 · 大数据、物联网、自动化、方案学习探讨
天空之城iot
采纳数:79 获赞数:269

向TA提问 私信TA
展开全部
用c语言的共用体把它分解,自己考虑。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
过山车1988
2013-01-21
知道答主
回答量:2
采纳率:0%
帮助的人:2907
展开全部
0x11223344表示的是16进制,一共32位11-->00010001,22--->00100010.。。。。。。
你移位的单位错了,可以是可以运行,但结果一定不正确
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式