HexCompare比较任意Bin/Hex/Srec/s19/elf文件

Posted 嵌入式软件实战派

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HexCompare比较任意Bin/Hex/Srec/s19/elf文件相关的知识,希望对你有一定的参考价值。

一、比较工具

说到文件比较,在Windows系统最常用的莫过于Beyond  Compare了,好用是很好用,不过这货是要license收费的,而且还挺贵的。

当然,其他选择也是很多的,例如小乌龟里面的比较工具,visual code里面也有文件比较的插件,免费的。

也有高手直接用diff命令的,视界面如粪土。

二、比较Hex数据

言归正传,作为嵌入式软件工程师,很多时候是要和Bin/Hex/Srec文件搞在一起的,如果要比较这些文件的Hex数据呢。

Note:如果你对这几种文件格式还不够了解,请戳《SREC、Hex、Bin等烧录文件格式完全解读

>>> Bin文件和Bin文件比较

这还好说,直接找个能比较二进制文件的工具直接比较就好了,例如Beyond Compare

>>> Hex文件和Hex文件比较

这个看情况,如果是同一个软件生成的Hex,其里面的格式属性应该一样的,即段分布,每行长度是一样的,可以直接比较,但需要了解Hex的格式要求。

但是,如果一个Hex文件里面的一行内容长度是8字节,一个是16字节,这就没法搞了。

但是有个问题,Hex文件里面的内容地址不一定连续的,可能存在空隙,例如一个Hex文件地址00000000-00010000和FFFF0000-FFFF8000两个段有内容,你转Bin试试,撑爆硬盘,卡死电脑,你信不信,别说我没提醒哦

>>> Srec文件和Srec文件比较

Rrec文件和Hex文件一样,都是字符型带地址的文件格式,比较效果同样有Hex那样的问题。

>>> Bin文件和Hex/Srec文件比较

别想,转Bin再比较吧

你看(左边是bin,右边是hex),这根本就不是一个频道的

>>> Hex文件和Srec文件比较

呵呵,虽然都是字符型,这两种文件格式不一样,可以看出一点点,但是别这样费神了。

>>> Bin/Hex/Srec文件和ELF文件比较

想出这个想法都有点心虚。

ELF文件虽然是可执行文件,但其内部是存有Memory镜像的,即可提取出Bin内容的。

但是,这比较嘛……算了,先打消这念头吧!

以上,就是各种文件比较的情况,和一些可能遇到的问题。

三、Hex比较常规方法

那么,真没办法了吗?

我能想到的办法有几种:

1. 将文件转成bin格式,用Beyond Compare来比较;

2. 用J-Flash打开两个文件,人肉比较;

3. 网上找个付费的,可以比较Hex/S19等格式的工具(以前还真见过,忘记名字了);

4. 用Vector的Hexview比较。

但是,这些,我都不满意。

我期望有一个可以任意支持Hex/Srec/Bin,甚至ELF文件格式的Hex内容比较工具,重要的是免费,无license困扰。

四、HexCompare比较工具

找我是没找到的,不过我狠下心写了一个。

没错,可以比较任意Hex/Srec/Bin/TI-TXT/ELF等格式文件的Hex内容!

我给它取了个名字--HexCompare

支持:

1. 自动识别文件格式

2. 生成html文件报告

3. 红色标注内容不同部分

4. 可以指定地址范围

5. 指定每行显示长度

五、HexCompare工具下载

首先,该工具完全免费

其次,可以通过本公众号获得下载链接

关注公众号“嵌入式软件实战派”,回复“HexCompare”即可获得下载链接。

可能你还感兴趣的文章

以上是关于HexCompare比较任意Bin/Hex/Srec/s19/elf文件的主要内容,如果未能解决你的问题,请参考以下文章

HexConvert转换合并或截取任意Hex/Srec/Bin等文件

HexConvert转换合并或截取任意Hex/Srec/Bin等文件

如何制作一个比较任意数量的相同类型的通用 lambda

sourcetree 如何让任意两个版本中同一个文件进行比较

是否可以将两个任意函数与 C++17 中的 std::any 进行比较?

pandas 比较两个不同大小的数据帧映射值,并在缺失值时添加任意值