weixin_45367687 2020-04-23 19:01 采纳率: 50%
浏览 330
已采纳

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

上传数据需除十,正数的范围为 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);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制