欢迎来到小居数码网-一家分享数码知识,生活小常识的网站,希望可以帮助到您。

当前位置:生活小常识 > 数码知识 >
优质

用C#代码读取HEX文件中的数据方法(hex文件用什么软件打开)

数码知识

丁镔庭优秀作者

原创内容 来源:小居数码网 时间:2024-01-15 17:09:01 阅读() 收藏:50 分享:41

导读:您正在阅读的是关于【数码知识】的问题,本文由科普作家协会,生活小能手,著名生活达人等整理监督编写。本文有773个文字,大小约为3KB,预计阅读时间2分钟。

最近工作中需要把HEX中的数据提取出来保存为BIN文件,今天就把我的读取HEX文件的方法分享出来。

hex文件用什么软件打开

HEX文件格式是可以烧写到嵌入式芯片中的一种文件格式,一般是通过C或者汇编语言编译后生成,任何的文本编辑软件都可以查看此文件,我一般使用NOTEPAD++。

整个文件以行为单位,每行以冒号开头,内容全部为16进制

HEX文件示例

下面用一个例子来说明:

:20008000DAF8220261E19010DCEFF0E49005A6F09010E8F09010E3F0E5665407FFBF070464

第一个20为数据长度,表示后面的数据有32字节。

紧跟着后面的00 80为地址,表示这行数据在芯片中的保存位置。

再后面的00为数据类型,类型共分以下几类:

'00' 有效的数据

'01' 文件结束

'02' 扩展段地址记录

'03' 开始段地址记录

'04' 扩展线性地址记录

'05' 开始线性地址记录

接着00后面的32字节就是数据DAF8220261E19010DCEFF0E49005A6F09010E8F09010E3F0E5665407FFBF0704

最后一个64是校验码。

在我多次使用中数据类型只用到了00,04,01,下面是代码示例(由于C#是自学的非常不专业)最大支持512KB的文件读取,并且起始地址是0:

C#读取HEX文件示例

byte[] frimwareArray = new byte[512*1024];

for (int i = 0; i < frimwareArray.Length; i++)

{

frimwareArray[i] = 0xFF;

}

StreamReader strFile = new StreamReader(hexfile);

Int32 hexCounter = 0;

Int32 lineOffset = 0;

string hexLine = string.Empty;

Int32 hexLineAddress = 0;

Int32 hexLineLen = 0;

hexMaxAddress = 0;

while (strFile.EndOfStream != true)

{

hexLine = strFile.ReadLine();

if (hexLine.Substring(0, 1) == ":")

{

if (hexLine.Substring(7, 2) == "00")//有效的数据

{

hexLineAddress = HEX2INT32(hexLine.Substring(3, 4)); //截取相对数据地址

hexCounter = hexLineAddress + lineOffset; //相对数据地址+线性偏移地址==绝对的数据地址

hexLineLen = HEX2INT32(hexLine.Substring(1, 2)); //获数据的数据长度

for (int i = 0; i < hexLineLen; i++) //读取hex文件中的数据

{

frimwareArray[hexCounter++] = (byte)HEX2INT(hexLine.Substring((i * 2) + 9, 2));

}

if (hexMaxAddress < hexCounter) //更新最大的hex文件地址

{

hexMaxAddress = hexCounter;

}

}

else if (hexLine.Substring(7, 2) == "04")//扩展线性地址记录

{

lineOffset = HEX2INT32(hexLine.Substring(9, 4)) * 65536;

}

else if (hexLine.Substring(7, 2) == "01")//文件结束

{

strFile.Close();

break;

}

}

else

{

strFile.Close();

MessageBox.Show("Hex file error", "Waring",MessageBoxButtons.OK,MessageBoxIcon.Error);

break;

}

上面就是小居数码小编今天给大家介绍的关于(hex文件用什么软件打开)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。

94%的朋友还想知道的:

(451)个朋友认为回复得到帮助。

部分文章信息来源于以及网友投稿,转载请说明出处。

本文标题:用C#代码读取HEX文件中的数据方法(hex文件用什么软件打开):http://sjzlt.cn/shuma/111264.html

猜你喜欢