写一个程序实现数据包的封装,根据用户输入的温度,湿度,门的状态0/1 灯的状态0/1, 空调状态0/1,冰箱状态0/1,当前二氧化碳浓度 ,封装一个32位的数据包.温度:0-6位 湿度7-13位,14位表示门,15位表示灯,16位表示空调,17位表示冰箱,18-25位表示二氧化碳浓度。 并输出该数据包!
#include <stdio.h>
int main()
{
int temperature, humidity, door, lamp, air_conditioning, refrigerator, CO;
unsigned int encapsulation;
int num = 1, i = 1;
while (i)
{
printf("输入当前温度,湿度,门的状态,灯的状态,空调状态,冰箱状态,当前二氧化碳浓度\n");
scanf("%d%d%d%d%d%d%d", &temperature, &humidity, &door, &lamp, &air_conditioning, &refrigerator, &CO);
while (i)
{
printf("请重新输入当前温度,湿度,门的状态,灯的状态,空调状态,冰箱状态,当前二氧化碳浓度\n");
scanf("%d%d%d%d%d%d%d", &temperature, &humidity, &door, &lamp, &air_conditioning, &refrigerator, &CO);
if (temperature >= 128)
{
printf("温度过高!\n");
break;
}
if (humidity >= 128)
{
printf("湿度过高!\n");
break;
}
else
{
i = 0;
printf("%x\n", encapsulation = temperature + (humidity << 7) + (door << 14) + (lamp << 15) + (air_conditioning << 16) + (refrigerator << 17) + (CO << 18));
break;
}
}
}
return 0;
}