/*----------------------------------------
函数名称:int StrToHex(const char *str, char *hex, UINT nLength)
功 能:将字符串(不一定是以'/0'结尾的)转化为十六进制表示的字符串,如:"HELLO"-->"48 45 4C 4C 4F "
nLength可以指定为字符串的实际长度
参数说明:str--------需要转换的字符串
hex -------转换后的字符串
nLength----需要转换的字符串的长度(对不以'/0'结束的无符号数组,需要指明长度)
返 回 值:零,成功
制 作 人:yaodebo
时 间: 2006-10-21
----------------------------------------*/
int StrToHex(const char *str, char *hex , UINT nLength)
{
int i;
for (i=0;i<(int)nLength;i++)
{
sprintf(hex+i*3,"%02X ",str[i]&0xFF); //将字符转化为相应的十六进制表示
}
return 0;
}
/*----------------------------------------
函数名称:int HexToStr(const char *hex, char *str)
功 能:将十六进制字符串转换字符串形式
如将"F0 14 00 15 AF AF AF 0F " 这个有24个字符的字符串转换为8个字节表示的字节串
参数说明:hex----十六进制字符串
str----转换后的字符串(根据实际需要,转换时00不截断)
返 回 值:0-------转换成功
-1-------转换失败
制 作 人:yaodebo
时 间: 2006-10-21
----------------------------------------*/
int HexToStr(const char *hex, char *str)
{
int i,hlen,iData,iFlag;
char ch;
iData=0;
iFlag=0;
hlen=(int)strlen(hex);
for (i=0;i<hlen;i++)
{
if (' '==hex[i])
{
continue;
}//end if
ch=hex[i];
if ((ch>='0') && (ch<='9'))
{
ch-=0x30;
}
else if ((ch>='a') && (ch<='f'))
{
ch-=0x57;
}
else if ((ch>='A') && (ch<='F'))
{
ch-=0x37;
}
else
{
*str='/0';
return -1;
}//end if
if (0==iFlag)
{
iData=ch;
iFlag=1;
}
else
{
iData=(iData<<4) +ch;
iFlag=0;
*str++=iData;
}//enf if
}//enf for
*str='/0';
return 0;
}