为了存储长度值,我需要将整数值分为一个字节的四部分,并将其存储在要发送到套接字的缓冲区中。我能够将整数分成四部分,但在合并时无法检索正确的值。为了演示我的问题,我编写了一个示例程序,在其中将int分成四个char变量,然后在另一个整数中将它们合并。目标是在合并后获得相同的结果。
这是我的小程序。
#include <stdio.h>
int main ()
{
int inVal = 0, outVal =0;
char buf[5] = {0};
inVal = 67502978;
printf ("inVal: %d\n", inVal);
buf[0] = inVal & 0xff;
buf[1] = (inVal >> 8) & 0xff;
buf[2] = (inVal >> 16) & 0xff;
buf[3] = (inVal >> 24) & 0xff;
outVal = buf[3];
outVal = outVal << 8;
outVal |= buf[2];
outVal = outVal << 8;
outVal |= buf[1];
outVal = outVal << 8;
outVal |= buf[0];
printf ("outVal: %d\n",outVal);
return 0;
}
输出
输入值: 67502978 输出值: -126
我做错了什么?