weixin_45367687
2020-04-23 19:01
采纳率: 31.8%
浏览 293

有关十六进制的一个数据报文转换代码要怎么写

上传数据需除十,正数的范围为 16 进制 0X0000-0X7FFF,负数采用正数的补码方式传输,其范围为 16 进
制 0X8000-0XFFFF,
如:
湿度上传 16 进制 0X0311,对应十进制 785,表示 78.5%
温度上传 16 进制 0X00FF,对应十进制 255,表示 25.5℃
温度上传 16 进制 0XFF9B,对应十进制 100(0XFFFF-0XFF9B=0X64), 表示-10.0℃
报文格式为01 03 04 温度H 温度L 湿度H 湿度L CRCL CRCH

现在我想获取报文中温湿度的实际值要怎么做才好

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • threenewbee 2020-04-23 23:12
    已采纳

    问题解决的话,请点下采纳

    char *pBuffer = 你读取的返回数据
    if (pBuffer[0] == 1 && pBuffer[1] == 3 && pBuffer[2] == 4)
    {
    int温度 = (pBuffer[3] * 256 + pBuffer[4]);
    if (温度 >= 32768) 温度 = 温度 - 65536;
    int湿度 = (pBuffer[5] * 256 + pBuffer[6]);
    if (湿度 >= 32768) 湿度 = 湿度 - 65536;
    printf("温度=%f 湿度=%f", (float)温度/10.0f, (float)湿度 / 10.0f);
    }
    
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题