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