【发布时间】: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 两种格式表示。