• 大小: 48.72 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-10-17
  • 语言: 其他
  • 标签: HEX  

资源简介

1、支持目前的Hex86、Hex386等数据格式到bin文件的转换。
2、支持可选的CRC校验或BCC校验算法。
3、支持无效字符的填充(用以实现在嵌入式系统中的冗余技术,从而保证代码的健壮性)。
4、支持可选的BIN代码空间大小定制。
5、具有对输入hex文件格式的类型自动判断功能并自动检测转换过程中的错误。
6、具有帮助提示。
7、编译工具:Visual C++6.0

资源截图

代码片段和文件信息

/************************************************************************************
* Copyright(c)2008-2018 GENVICT Co.ltd.
* All rights reserved
*
*文件名称:HexToBin.c
*制作日期:2008-05-26 16:56:00
*作    者:郭云峰
*文件类型:Hex转bin文件的具体实现函数
*功能描述:实现Hex格式的文件转为bin格式的文件。
**************************************************************************************/
#define  HEXTOBIN_GLOBAL

#include 
#include 
#include 
#include “HexToBin.h“

/************************************************************************************
*函数名称:VerifyData()
*入口参数:数据指针、数据个数、上次校验完后的数据
*出口参数:操作结果
*功能描述:将传入的指定数量的数据进行异或运算并返回最终结果.
*抛出异常:无
*特殊情况:CRC校验方式采用CCITT(欧洲标准:X^16+X^12+X^5+1)
*************************************************************************************/
INT16U VerifyData(INT32U numINT8U *p_dataINT8U typeINT16U last)
{
INT8U  l_index;
UNWORD l_sum;

l_sum.word =last;

if( CRC == type )
{
while(num--)
{
for(l_index=0x80;l_index>0;l_index>>=1)
{
if(l_sum.word & 0x8000)
{
l_sum.word <<=1;
l_sum.word  ^=0x1021;
}
else
{
l_sum.word <<=1;
}

if((*p_data) & l_index)
{  
l_sum.word ^=0x1021;
}
}
p_data++;
}
}
else if( BCC == type )
{
while( num > 0 )
{
l_sum.byte.lb^=p_data[--num];
}
l_sum.byte.hb=~l_sum.byte.lb;
}

return l_sum.word;
}

/*************************************************************************************
*函数名称:AsciiToHex()
*入口参数:ASCII码1、ASCII码2、Hex数据指针
*出口参数:操作结果
*功能描述:将传入的2位ASCII码合并为一个Hex格式的数据
*抛出异常:无
*
**************************************************************************************/
INT8U AsciiToHex(INT8S ascii1INT8S ascii2INT8U *p_data)
{
INT8U status =OP_OK;
INT8S ascii;
BYTEUNION temp;

temp.byte =0;

//将传入的ASCII码全部转换为大写
ascii =(INT8S)toupper(ascii1);

//判断传入的ascii码是否符合要求
if( ascii >= ‘0‘ && ascii <= ‘9‘)
{
temp.bf.h4 =ascii-0x30;
}
else if( ascii >=‘A‘ && ascii <=‘F‘)
{
temp.bf.h4 =ascii-0x37;
}
    else //其它字符认为是无效字符
{
status =OP_FAIL;
}

//进行低4位转换
if( OP_OK == status )
{
ascii =(INT8S)toupper(ascii2);

//判断传入的ascii码是否符合要求
if( ascii >= ‘0‘ && ascii <= ‘9‘)
{
temp.bf.l4 =ascii-0x30;
}
else if( ascii >=‘A‘ && ascii <=‘F‘)
{
temp.bf.l4 =ascii-0x37;
}
else //其它字符认为是无效字符
{
status =OP_FAIL;
}
}

//获取转换后的Hex数据
*p_data =temp.byte;

//返回执行结果
return status;
}

/****************************************************************************************
*函数名称:DispHelp()
*入口参数:无
*出口参数:无
*功能描述:显示帮助信息。
*抛出异常:无
*
*****************************************************************************************/
void DispHelp(void)
{
printf(“功能描述:1.本软件可实现将Hex格式的文件转换为bin文件并自动根据需要加入校验和.\n“);
printf(“         2.支持的校验方式:BCC(异或)/CRC.\n“);
printf(“         3.选择了增加校验和时必须指定校验和存放的地址.\n“);
printf(“         4.对未用到的程序空间必须指定填充数据(以十六进制方式).

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      18301  2008-06-10 17:27  HexToBin\V101\HexToBin.cpp

     文件       3524  2008-05-27 11:28  HexToBin\V101\HexToBin.dsp

     文件        541  2008-05-27 09:55  HexToBin\V101\HexToBin.dsw

     文件       1379  2008-06-02 16:24  HexToBin\V101\HexToBin.H

     文件      50176  2008-11-03 15:10  HexToBin\V101\HexToBin.ncb

     文件      53760  2008-11-03 15:10  HexToBin\V101\HexToBin.opt

     文件       1276  2008-06-10 17:27  HexToBin\V101\HexToBin.plg

     文件      58368  2008-06-10 17:27  HexToBin\V101\Release\HexToBin.bsc

     文件      40960  2008-06-10 17:27  HexToBin\V101\Release\HexToBin.exe

     文件      19580  2008-06-10 17:27  HexToBin\V101\Release\HexToBin.obj

     文件          0  2008-06-10 17:27  HexToBin\V101\Release\HexToBin.sbr

     文件      33792  2008-06-10 17:27  HexToBin\V101\Release\vc60.idb

     目录          0  2008-06-27 09:15  HexToBin\V101\Release

     目录          0  2008-11-03 15:10  HexToBin\V101

     目录          0  2008-06-10 17:27  HexToBin

----------- ---------  ---------- -----  ----

               281657                    15


评论

共有 条评论