Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1673185
  • 博文数量: 782
  • 博客积分: 2455
  • 博客等级: 大尉
  • 技术积分: 4140
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-06 21:37
个人简介

Linux ,c/c++, web,前端,php,js

文章分类

全部博文(782)

文章存档

2015年(8)

2014年(28)

2013年(110)

2012年(307)

2011年(329)

分类:

2011-11-25 10:44:31

如果要用4个单字节字符变量来填充1个整型变量可以这样做:
  1. int a=0;
  2. char b[4];
  3. for(j=0; j<4; j++)
  4. {
  5.     a |= b[j]<<(8*j);
  6. }
但这样做结果是不对的,因为b为char类型数组,为有符号数。而a为整型,因此b[j]首先会进行符号位扩展。
如果b[j]的高位为1,则在左移之前首先将高字节都扩展为ff。因此最终结果不正确。
将数组b定义为无符号字符数组即可:
  1. int a;
  2. unsigned char b[4];
  3. for(j=0; j<4; j++)
  4. {
  5.     a |= (b[j])<<(8*j);
 
阅读(771) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~