项目中上位机给下位机发送的指令是16进制数,需要将从控制台输入的string类型数据(比如"AA BB 03 00 07 00 02 CC")转换为对应大小的16进制数。
//HexChar()将16进制字符转换为相应大小的16进制数
char HexChar(char c)
{
if((c>='0')&&(c<='9'))
return c-'0';
else if((c>='A')&&(c<='F'))
return c-'A'+10;
else if((c>='a')&&(c<='f'))
return c-'a'+10;
else
return 0x10;
}
//Str2Hex()将16进制字符串转换为对应的16进制数并存入char数组中
//返回char数组字节长度,即一共转换了多少个数
int Str2Hex(CString str, char *data)
{
int t,t1;
int rlen=0,len=str.GetLength();
if(len==1)
{
char h=str[0];
t=HexChar(h);
data[0]=(BYTE)t;
rlen++;
}
//data.SetSize(len/2);
for(int i=0;i<len;)
{
char l,h=str[i];
if(h==' ')
{
i++;
continue;
}
i++;
if(i>=len)
break;
l=str[i];
t=HexChar(h);
t1=HexChar(l);
if((t==16)||(t1==16))
break;
else
t=t*16+t1;
i++;
data[rlen]=(BYTE)t;
rlen++;
}
return rlen;
}