设为首页 加入收藏

TOP

bin文件转换为hex文件C语言实现(二)
2015-11-19 23:06:56 来源: 作者: 【 】 浏览:16
Tags:bin 文件 转换 hex 语言 实现
_length / NUMBER_OF_ONE_LINE); //商,需要读取多少次 src_file_remainder = (uint8_t)(src_file_length % NUMBER_OF_ONE_LINE); //余数,最后一次需要多少个字符 gHexFor.data = buffer_bin; //指向需要转换的bin数据流 while (cur_file_page < src_file_quotient) { fread(buffer_bin, 1, NUMBER_OF_ONE_LINE, src_file); gHexFor.len = NUMBER_OF_ONE_LINE; if ((low_addr & 0xffff0000) != hign_addr && hign_addr != 0) //只有大于64K以后才写入扩展线性地址,第一次一般是没有 { hign_addr = low_addr & 0xffff0000; gHexFor.addr[0] = (uint8_t)((hign_addr & 0xff000000) >> 24); gHexFor.addr[1] = (uint8_t)((hign_addr & 0xff0000) >> 16); gHexFor.type = 4; gHexFor.len = 0; //记录扩展地址 tmp = BinFormatEncode(buffer_hex, &gHexFor); fwrite(buffer_hex, 1, tmp, dest_file); fprintf(dest_file, "\n"); ; } gHexFor.addr[0] = (uint8_t)((low_addr & 0xff00) >> 8); gHexFor.addr[1] = (uint8_t)(low_addr & 0xff); gHexFor.type = 0; //数据记录 tmp = BinFormatEncode(buffer_hex, &gHexFor); fwrite(buffer_hex, 1, tmp, dest_file); fprintf(dest_file, "\n"); ; cur_file_page++; low_addr += NUMBER_OF_ONE_LINE; } if (src_file_remainder != 0) //最后一次读取的个数不为0,这继续读取 { fread(buffer_bin, 1, src_file_remainder, src_file); gHexFor.addr[0] = (uint8_t)((low_addr & 0xff00) >> 8); gHexFor.addr[1] = (uint8_t)(low_addr & 0x00ff); gHexFor.len = src_file_remainder; gHexFor.type = 0; //数据记录 tmp = BinFormatEncode(buffer_hex, &gHexFor); fwrite(buffer_hex, 1, tmp, dest_file); fprintf(dest_file, "\n"); ; } gHexFor.addr[0] = 0; gHexFor.addr[1] = 0; gHexFor.type = 1; //结束符 gHexFor.len = 0; tmp = BinFormatEncode(buffer_hex, &gHexFor); fwrite(buffer_hex, 1, tmp, dest_file); fprintf(dest_file, "\n"); ; fclose(src_file); fclose(dest_file); return RES_OK; }

?

新建main.c文件,这里是带参数的,主要是方便批处理,是另有用途。

?

#include 
  
   
#include "bin2hex.h"
int main(int argc, char *argv[])
{
	RESULT_STATUS res;
	if (argc != 3)
	{
		printf("input para doesn't match\r\n");
		return -1;
	}
	res = BinFile2HexFile(argv[1], argv[2]);
	switch (res)
	{
		case RES_OK:
			printf("hex file to bin file success!\r\n");
			return -1;
		case RES_BIN_FILE_NOT_EXIST:
			printf("bin file doesn't exist!\r\n");
			return -1;
		case RES_HEX_FILE_PATH_ERROR:
			printf("hex file path is error, please check it!\r\n");
			return -1;
	}
	return 0;
}
  

?

就三个源文件,编译生成bin2hex.c文件。

下面描述下用法:

把bin2hex.c文件拷贝到c盘根目录下,再拷贝一个需要转换的bin文件,这里我就拷贝了一个hwb.bin文件。然后点击菜单开始->运行->输入cmd->进入dos窗口->调整当前目录为c:,这个如果不知道的可以百度一下,无法就是就是命令cd.

最后输入命令:bin2hex hwb.bin hwb.hex,输入后,可以看到提示说转换成功,大家再检查下是否有一个hex文件,本文的代码支持大于64K,大家把转换后的hex下载到单片机上运行试试看。

\

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C - Monkey and Banana HDU 1069(.. 下一篇C语言函数调用参数压栈的相关问题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: