zoukankan      html  css  js  c++  java
  • 案例 十六进制 大小端 协议

    下面这个是协议, 

    协议是小端模式,一共有8个字节:

     然后校验和计算的是前7个字节的数据.

    数据0,数据1: 两个共同组成16位的有符号型数据.

    数据2,数据3:两个共同组成16位的有符号型数据.       

    且都是小端模式,如果你用的单片机是stm32,那单片机的架构也是小端模式,就可以直接读取和写入.

    下面是采集的一些数据:

    如何从这些十六进制的数据中得到相应的十进制数据.

    比如:上面图片中的一条数据: DD CC 02 2E 02 20 02 FD 这里是一组数据,

    然后 2E 02是两个十六进制数据,它代表的是558

    计算方法是:

    上面的代码是这样的:因为读出来的十六进制是 0x2e, 0x02

    又因为协议是小端,所以, 0x02是高8位; 0x2e是低8位;

    然后上面程序中 %hd 输出的是 short 格式的.

    关于校验和:

    某个位置: DD CC 05 1E F8 4F FD 10
    某个速度: DD CC 03 95 00 00 00 41

    用上面的程序 把 0x1e 0xf8 带进去是:-2018

    把0x95 0x00带进去是得到:-107

    关于校验和,需要DD CC 05 1E F8 4F FD进行校验和,最后应该得到的是0x10

    校验和采用的是CheckSum方法.

    比如:

    下面还有一个问题,如何把十进制,转换成16进制的指令:

    short rate=10;

    str[3]=(char)(rate&0xff);

    str[4]=(char)((rate>>8)&0xff)

  • 相关阅读:
    Django之模板系统
    Django之ORM操作
    Django之路由分配系统
    基于模态对话框 学生管理系统
    初识Django
    ORM框架之SQLALchemy
    MySQL查询性能调优化
    MySQL练习题
    MySQL自带功能介绍
    javascript时间戳和日期字符串相互转换
  • 原文地址:https://www.cnblogs.com/chulin/p/14059600.html
Copyright © 2011-2022 走看看