【问题标题】:How to get the total length of complete hex file (Both intel and Motorola hex files)?如何获得完整的十六进制文件(英特尔和摩托罗拉十六进制文件)的总长度?
【发布时间】:2012-12-29 12:06:57
【问题描述】:

我想获取英特尔和摩托罗拉 S19 十六进制文件的完整十六进制文件中不同地址记录中存在的所有数据记录的总长度。

例如,

:020000048000FC

:10246200464C5549442050524F46494C4500464C33

:10247200464C554944ABACDEAF46494C4500464C33

:02000004800AFC

:10246200464C5549442050524F46494C4500464C33

:10247200464C554944ABACDEAF46494C4500464C33

:020000049000FC

:10246200464C5549442050524F46494C4500464C33

:10247200464C554944ABACDEAF46494C4500464C33

:00000001FF

(请忽略上述示例 hex 文件中记录之间的空格)。

我用谷歌搜索了同样的东西,但我找不到任何有用的东西。

我正在尝试比较两个十六进制文件。为了比较,我想获得完整的十六进制文件的长度。但我不知道要获得完整十六进制文件的确切长度。

谁能帮我解决这个问题?

提前致谢!

完整的十六进制文件定义为:

在 Intel Hex File 的情况下,每一行都定义为记录,并且必须以 :(冒号)开头。它可以是地址或数据记录。十六进制文件可以包含任意数量的地址记录。地址记录可以包含其数据记录。每个数据记录的长度在 :(冒号)之后的第一个字节中指定。 更多信息请参考http://en.wikipedia.org/wiki/Intel_HEX

我想计算完整十六进制文件中数据记录的总长度。即hex文件中每个对应地址记录下存在的所有数据记录的长度总和。

【问题讨论】:

  • 你的每个:... 序列都是你所谓的“完整的十六进制文件”吗?
  • 我已经用完整的十六进制文件的定义编辑了这个问题。请检查。
  • 从 Wikipedia 文章中,摩托罗拉文件的表示形式 (SREC) 似乎略有不同,根据您的经验,这也是真的吗?
  • "每个数据记录的长度在 : (冒号) 之后的第一个字节中指定"。您可以读取文件并将:(冒号)之后的每个字节的值相加。
  • @fge 是的。摩托罗拉十六进制文件与英特尔相比具有不同的表示。相同的十六进制数据可以用 Intel 和 Motorola 两种格式表示。

标签: java intel motorola


【解决方案1】:

我正在尝试比较两个十六进制文件。为了比较,我想 获取完整的十六进制文件的长度。但我不知道 获取完整 hex 文件的确切长度。

你为什么不用length():

File hexFile = new File("/path/to/your/hexfile");
long length = hexFile.length();

【讨论】:

  • 如果两个 intel hex 文件具有不同的布局(hex 文件中记录的长度)但数据仍然相同,我不能使用 length() 方法。 For example, the above same hex data can be generated with layout 0x20, :020000048000FC :20246200464C5549442050524F46494C4500464C247200464C554944ABACDEAF46494C4500464C33 :02000004800AFC :20246200464C5549442050524F46494C4500464C247200464C554944ABACDEAF46494C4500464C33 :020000049000FC :20246200464C5549442050524F46494C4500464C247200464C554944ABACDEAF46494C4500464C33 :00000001FF i want to compare two hex files having different layouts but same hex data.
  • 您应该创建一个类来表示数据,并覆盖equals() 方法。您可以读取两个文件,将它们的数据表示在您的对象中,并可以将它们与equals() 进行比较。
【解决方案2】:

要确定大小,您可以使用 ls -l 命令。 为了比较,您可以使用 MD5,并生成一个哈希值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 2011-12-09
    • 2013-06-26
    • 2021-04-12
    • 1970-01-01
    • 2021-12-22
    • 2010-11-21
    相关资源
    最近更新 更多