C++:如何把一个int转成4个字节?

文章转载自:http://blog.csdn.net/iamshaofa/article/details/44243649

大家都知道,一个int 或 unsigned int是由4个字节组成的,(《C/C++学习指南》,第3章,第3.2.3节:变量的内存视图

  例如,

      int   n  =  sizeof( int) ;   // n为4


大家也能够清晰明白地看到内存里,那4个字节就在那,(《C/C++学习指南》,附录:VC2008调试方法)  

但问题是:如何在代码里转成4个字节呢?


方法1:memcpy

这种方法很暴力,也不科学。大家先试一下。

unsigned int a = 0x12345678;

unsigned char buf[4];

memcpy(buf,  &a,  4);

观察buf数组的4个元素的值,是不是就是0x78  0x56  0x34  0x12 (嗯,小端的,这就是缺陷,我们想要的结果其实是 buf[0]=0x12  buf[1]=0x34  buf[2]=0x56 buf[4]=0x78)


方法2:正规方法  (《C/C++学习指南》,第6章,第6.8节)

buf[0]  = a >> 24;     

buf[1] = a >> 16;

buf[2] = a >> 8;

buf[3] = a;

用你的VC看一下,是不是正合你意。直接在调试状态下看,别再printf了。


不用谢了,应该的!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值