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 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决