时限:1000ms 内存限制:10000K 总时限:3000ms
描述:
Intel Hex文件格式是在嵌入式开发中常用的文件格式,用来保存单片机或处理器的目标程序代码,绝大多数编程器都支持Intel Hex格式。
从表面上看,Intel Hex文件是一个ASCII码的文本文件。它每行包括一个十六进制数字串,称为一个记录。记录的格式如下图所示:
对于形如“ :LLAAAATTHHHH..HHHHCC” 的记录(每两个字母代表一个字节),有
LL: 数据记录的长度
AAAA: 数据记录的开始地址
TT: 数据类型。00为数据记录,01为记录结束
HH..HH: 数据。
CC: 校验码。除冒号“:”以外,该校验码必须使当前行所有字节的和为00H。注意对和只取低8位。
例如以下是一条取自AVR单片机程序的Intel Hex文件中的记录:
:100000000C9469000C9488000C9488000C9488006F
LL=0x10,即本条记录中数据长度为16个字节。
AAAA=0x0000,即本条记录的开始地址为0x0000。
TT=0x00,即本条记录为数据记录。
HHH..HHH=0C94..8800,即本条记录的数据为0x0C,0x94,...,0x88,0x00。
CC=0x6F,即本条记录的校验码为0x6F。
表示文件结束用单独的一行
:00000001FF
现在作为嵌入式开发工程师的你需要将一个二进制程序转换为Intel Hex格式,以便将它通过编程器写入嵌入式设备。
输入:
一个二进制程序文件,以十六进制的形式给出,每行至多16个字节,到8个字节后用一空格隔开,以方便阅读。
输出:
该程序文件的Intel Hex格式表示,每行包含16个字节的实际程序数据(数据记录的最后一行除外,可以包含少于16个字节的数据)。
输入样例:
0C9469000C948800 0C9488000C948800
0C9488000C948800 0C9488000C948800
222321F0213009F0 82CF03C00E94D102
7ECF0E946A027BCF DC0101C06D934150
F0005040E0F70895 FFCF
输出样例:
:100000000C9469000C9488000C9488000C9488006F
:100010000C9488000C9488000C9488000C94880040
:10002000222321F0213009F082CF03C00E94D102A7
:100030007ECF0E946A027BCFDC0101C06D934150EC
:0A004000F0005040E0F70895FFCFF4
:00000001FF