//解析二进制字符串
bool ParseBinStr(const char szStr[8], char* cpRst)
{
*cpRst = 0;
char cRtn = '\0';
if (szStr == NULL)
return false;
for (int i=0; i<8; i++)
{
if (szStr[i] != '0' && szStr[i] != '1')
return false;
cRtn = szStr[i] - 48;
cRtn = cRtn << (8 - i - 1);
*cpRst |= cRtn;
}
return true;
}
//解析十六进制字符串
bool ParseHexStr(const char szStr[2],char* cpRst)
{
char cRtn = '\0';
if(szStr == NULL) return false;
//写高四位
if( ('0' <= szStr[0]) && ('9' >= szStr[0]) )
{
cRtn = (szStr[0] & 0x0F) << 4;
}
else if( ('A' <= szStr[0]) && ('F' >= szStr[0]) )
{
cRtn= (szStr[0] - 'A' + 10) << 4;
}
else if( ('a' <= szStr[0]) && ('f' >= szStr[0]) )
{
cRtn= (szStr[0] - 'a' + 10) << 4;
}
//写低四位
if( ('0' <= szStr[1]) && ('9' >= szStr[1]) )
{
cRtn += (szStr[1] & 0x0F);
}
else if( ('A' <= szStr[1]) && ('F' >= szStr[1]) )
{
cRtn += (szStr[1] - 'A' + 10);
}
else if( ('a' <= szStr[1]) && ('f' >= szStr[1]) )
{
cRtn += (szStr[1] - 'a' + 10);
}
*cpRst=cRtn;
return true;
}
另有字符不同进制间的转换