資源簡介
1、支持目前的Hex86、Hex386等數據格式到bin文件的轉換。
2、支持可選的CRC校驗或BCC校驗算法。
3、支持無效字符的填充(用以實現在嵌入式系統中的冗余技術,從而保證代碼的健壯性)。
4、支持可選的BIN代碼空間大小定制。
5、具有對輸入hex文件格式的類型自動判斷功能并自動檢測轉換過程中的錯誤。
6、具有幫助提示。
7、編譯工具:Visual C++6.0
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
- 上一篇:哈工大的高等電磁學電磁場課件
- 下一篇:IPset IP設置工具
評論
共有 條評論