接触HEX文件,主要是在一个项目上烧写eeprom。
首先先看这位前辈讲的很明白,https://www.cnblogs.com/libra13179/p/5821266.html,下面做一些补充。
补充
(百度百科https://baike.baidu.com/item/hex文件格式/1025048?fr=aladdin)
1.HEX行格式
<0x3a> (英文冒号 )
[数据长度 1Byte] (字符串形式HEX)
[数据地址 2Byte] (字符串形式HEX)
[数据类型 1Byte](字符串形式HEX)
[数据 nByte] (字符串形式HEX)
[校验 1Byte] (字符串形式HEX)
<0x0d> (转义字符 \r)
<0x0a> (转义字符 \n)
例:
:10FC00000100000000000000FE000000FFFFFFFFF9
2.基地址行(Extended Linear Address Record)
将会再后面的数据行地址自动加入基地址(基地址行的数据)。
:020000040004F6
3.最后结束行(End of File Record )
HEX文件结束行,代表hex的结束操作指令
:00000001FF
4.校验码C#代码
public string getcheckcode(byte[] data)//byte转HEXString
{
int lenn = data[0];//长度
int adr = data[1] << 8 | data[2];//地址
int type = data[3];//类型
byte[] temp = new byte[lenn];
Array.ConstrainedCopy(data, 4, temp, 0, lenn);//复制数据到指定长度数组
int sum = 0;//所有8位数据相加的和
for (int j = 0; j < lenn; j++)
{
Console.WriteLine(temp[j]);
sum += temp[j];
}
int checkcode = (0x100 - ((lenn + (adr >> 8 & 0xff) + (adr & 0xff) + type + sum) % 256))%256;//带入公式0x100-((长度+地址L+地址H+数据和)%256),再%256保证没有0x100校验码
return String.Format("{0:X2}", checkcode);//返回校验码字符串
}
5.检验工具
查看或者检验可以用Notepad++打开HEX格式文件,它会把错误行提示出来。