Hex与ASCII相互转换函数
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]=" ";
}
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;
}
- 上一篇: C语言十六进制数据同字符串的相互转换
- 下一篇: hex转换为char显示