zoukankan      html  css  js  c++  java
  • HEX文件格式和其校验算法

    这次我将在原来的基础上(http://www.cnblogs.com/libra13179/p/5787084.html)继续讲解HEX文件的格式

    打开app_valid_setting_apply.hex如下

    :020000040003F7
    :10FC00000100000000000000FE000000FFFFFFFFF9
    :00000001FF

    分析如下

    对数据帧结构

    冒号
    本行数据长度
    本行数据的起始地址
    数据类型
    数据
    校验码
    (红色)
    (紫色)
    (绿色)
    (蓝色)
    (黑色)
    (橙色)
     
    1byte
    2byte
    1byte
    N byte
    1byte

    补充

    数据类型

    '00' Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录

    '01' End of File Record:用来标识文件结束,放在文件的最后,标识HEX文件的结尾

    '02' Extended Segment Address Record:用来标识扩展段地址的记录

    '03' Start Segment Address Record:开始段地址记录

    '04' Extended Linear Address Record:用来标识扩展线性地址的记录

    '05' Start Linear Address Record:开始线性地址记录

    校验码

    020000040003F7为例子

    具体算法为 0x100-((0x02+0x00+0x00+0x04+0x00+0x03)%256)= 0xF7

    相关校验测试程序
    下面算法实现记录的校验,校验成功返回1,失败返回0

     //代码引用http://blog.chinaunix.net/uid-24789420-id-1635048.html   
        bit AnalyseHEX(char hex[],int len)
        {
          unsigned char i=1;
          unsigned char data;
          int cc=0;
          char temp[2];
          do
          {
              temp[0] = hex[i++];
              temp[1] = hex[i++];
              sscanf(temp,"%x",&data);
              cc += data;
          } while (i<(len-2));
          cc%=256;
          cc=0x100-cc;
          temp[0] = hex[i++];
          temp[1] = hex[i++];
          sscanf(temp,"%x",&data);
          return (cc==data)?1:0;
        }
    
        int _tmain(int argc, _TCHAR* argv[])
        {
            char hex[]="::020000040000FA";
            AnalyseHEX(hex,sizeof(hex));
        }
  • 相关阅读:
    MongoDB中常用的find
    MongoDB文档的增删改操作
    我的notepad++
    MongoDB入门知识
    Python基础5-常用模块
    Python基础4
    Python基础3(2017-07-20)
    Python基础2(2017-07-18)
    Python基础1(2017-07-16)
    Python简介(2017-07-16)
  • 原文地址:https://www.cnblogs.com/libra13179/p/5821266.html
Copyright © 2011-2022 走看看