c语言 16位二进制转为十进制

/*******************************************
函数名称:DHT_Readchar
功 能:从DHT21读取一个字节的数据
参 数:无
返回值 :读出的一个字节数据
********************************************/
uchar DHT_Readchar(void)
{
uchar i,temp=0;
uint Flag = 0;
for(i = 0;i < 8;i++)
{
Flag = 2;
while((!DHT_IN)&&Flag++);//等待上升沿,超时退出
delay_us(40); //延时40us
temp<<=1;
if(DHT_IN)
temp|=0x01;
else
temp&=~0x01;
Flag = 2;
while((DHT_IN)&&Flag++);//等待下降沿,超时退出
if(Flag == 1)
break; //超时则跳出for循环
}
return temp;
}
/*******************************************
函数名称:Read_DHT()
功 能:读取温度湿度值
参 数:无
返回值 :无
********************************************/
void Read_DHT(void)
{
uchar i;
uint TimeFlag = 0;
Set_DHTout;
DHT_0; //主机拉低
delay_ms(5); //延时5ms
DHT_1; //总线由上拉电阻拉高
Set_DHTin; //主机设为输入 判断从机响应信号
delay_us(40); //延时40us

if(!DHT_IN)
{
TimeFlag=2;
while((!DHT_IN)&&TimeFlag++);//判断从机发出的80us低电平响应信号是否结束
TimeFlag=2;
while((DHT_IN)&&TimeFlag++);//判断从机发出的80us高电平,如发出则进入数据接收状态
for(i = 0; i < 5;i++)
Buff_temp_wet[i]=DHT_Readchar();
DHT_1;
}
}

/*******************************************
函数名称:uint DHT_getTemp(void)
功 能:提取数值及符号
参 数:无
返回值 :无
********************************************/
uint DHT_getTemp(void)
{
//把温度的高位和地位组合,得到完整的温度
data_temp = Buff_temp_wet[2];
data_temp =Buff_temp_wet[2]<<8|Buff_temp_wet[3];
data_temp |= Buff_temp_wet[3];

return data_temp;
}
那个..... 得到的温度值是16位的二进制 怎样才能变成十进制的?

第1个回答  2015-08-31
int i, j, n = 0;

while(j = i % 10)
{
n *=10;

n += j;

}
i是16进制数 n是由i转成10进制的数。本回答被网友采纳