16,472
社区成员
发帖
与我相关
我的任务
分享
main()
{
char data[512];
int len=Str2Hex(m_strSendData,data);
}
//将字符串整理成16进制格式,用 data 参数送出,并返回数据长度
int CModbusSCommDlg::Str2Hex(CString str, unsigned char *data)
{
int t,t1;
int rlen = 0,len = str.GetLength(); //get total lenght
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 = t1 * 16 + t;
i++;
data[rlen] = (unsigned char)t;
rlen++;
}
return rlen;
}
//每个字符逐一转化成16进制
char CModbusSCommDlg::HexChar(char c)
{
if ( (c>='0') && (c<='9') )
return c-0x30;
else if ( (c>='A') && (c<='F') )
return c-'A'+10;
else if ( (c>='a') && (c<='f') )
return c-'a'+10;
else
return 0x10;
}