tcl脚本实现hex文件生成bin文件

 hex文件的格式说明:https://blog.csdn.net/weixin_39752827/article/details/81477686

代码如下:

proc hextobin {args} {
	#读取文件
	set fileName "H:/hexfile.hex"
	set fp [open $fileName r];
	
	set data(0) "";
	set row 0;
	while {[gets $fp dataline] >= 0} {
		set data($row) $dataline;
		incr row;
	}
	close $fp;
	
	puts $data(0);
	
	set sum 0;#二进制文件总长度
	set index 0;
	set outdata "";
	
	#不考虑顺序和地址
	while {$index < $row} {
		set type [string range $data($index) 7 8];#类型
		set len [format %d 0x[string range $data($index) 1 2]];#长度
		set dataline [string range $data($index) 9 [expr 9 + $len*2 - 1]];
		if {$type == "00"} {
			set sum [expr $sum + $len];
			for {set i 0} {$i < $len} {incr i} {
				set dataByteHex [string range $dataline [expr $i*2] [expr $i*2+1]];
			    set dataByteDec [format %d 0x$dataByteHex];
				set dataByteC [binary format c $dataByteDec];
				append outdata $dataByteC;
				
			}
		}
		incr index;
	}
	puts $sum;
	
	#生成bin文件
	set fileName "h:/bin.bin";
	set fp [open $fileName w];
	fconfigure $fp -translation binary
	puts -nonewline $fp $outdata;
	close $fp;
	
}

待优化:

  1. 地址乱序处理

 知识点:

  1. hex文件格式
  2. tcl二进制文件操作

猜你喜欢

转载自blog.csdn.net/loveoldsky/article/details/92382135