http://blog.youkuaiyun.com/surelion/article/details/7926116
char HexToASCII(unsigned char data_hex)
{
char ASCII_Data;
ASCII_Data=data_hex & 0x0F;
if(ASCII_Data<10)
ASCII_Data=ASCII_Data+0x30; //‘0--9’
else
ASCII_Data=ASCII_Data+0x37; //‘A--F’
return ASCII_Data;
}
void HexGroupToString(char *OutStrBuffer, unsigned char *InHexBuffer, unsigned int HexLength)
{
unsigned int i, k=0;
for(i=0;i<HexLength;i++)
{
OutStrBuffer[k++]=HexToASCII((InHexBuffer[i]>>4)&0x0F);
OutStrBuffer[k++]=HexToASCII(InHexBuffer[i]&0x0F);
}
OutStrBuffer[k]='\0';
}
BOOL StringToHexGroup(unsigned char *OutHexBuffer, char *InStrBuffer, unsigned int strLength)
{
unsigned int i, k=0;
unsigned char HByte,LByte;
if(strLength%2 !=0)
return FALSE;
for(i=0; i<strLength; i=i+2)
{
if(InStrBuffer[i]>='0' && InStrBuffer[i]<='9')
{
HByte=InStrBuffer[i]-'0';
}
else if(InStrBuffer[i]>='A' && InStrBuffer[i]<='F')
{
HByte=InStrBuffer[i]-'A' +10;
}
else
{
HByte=InStrBuffer[i];
return FALSE;
}
HByte=HByte <<4;
HByte = HByte & 0xF0;
if(InStrBuffer[i+1]>='0' && InStrBuffer[i+1]<='9')
{
LByte=InStrBuffer[i+1]-'0';
}
else if(InStrBuffer[i+1]>='A' && InStrBuffer[i+1]<='F')
{
LByte=InStrBuffer[i+1]-'A' +10;
}
else
{
LByte=InStrBuffer[i];
return FALSE;
}
OutHexBuffer[k++]=HByte |LByte;
}
return TRUE;
}

本文介绍了如何将十六进制数据转换为ASCII字符串,并提供了从ASCII字符串解析回十六进制数据的方法。通过两个函数HexGroupToString和StringToHexGroup实现了这一功能。
4921

被折叠的 条评论
为什么被折叠?



