int CSCommTestDlg::String2Hex(CString str, CByteArray &senddata)
{
int hexdata,lowhexdata;
int hexdatalen=0;
int len=str.GetLength();
senddata.SetSize(len/2);
for(int i=0;i<len;)
{
char lstr,hstr=str[i];
if(hstr==' ')
{
i++;
continue;
}
i++;
if(i>=len)
break;
lstr=str[i];
hexdata=ConvertHexChar(hstr);
//功能:若是在0-F之间的字符,则转换为相应的十六进制字符,否则返回-1
lowhexdata=ConvertHexChar(lstr);
if((hexdata==16)||(lowhexdata==16))
break;
else
hexdata=hexdata*16+lowhexdata;
i++;
senddata[hexdatalen]=(char)hexdata;
hexdatalen++;
}
senddata.SetSize(hexdatalen);
return hexdatalen;
}
//这是一个将字符转换为相应的十六进制值的函数
//好多C语言书上都可以找到
//功能:若是在0-F之间的字符,则转换为相应的十六进制字符,否则返回-1
char CSCommTestDlg::ConvertHexChar(char ch)
{
if((ch>='0')&&(ch<='9')) //0-9
return ch-0x30;
else if((ch>='A')&&(ch<='F'))// 大写A-F
return ch-'A'+10;
else if((ch>='a')&&(ch<='f'))// 小写a-f
return ch-'a'+10;
else return (-1);
}
标志一共有15个,加上三个控制标志的标志,一共是18个。
这个是VC串口转换的
由字符到HEX
o
他说的是C语言,我说的是C++
3q ````````
有搞好的源代码,串行口相关的,有VB,有VC的
还有二进制输出
基本上你们得用二进制输出
那个得设置ios::binary
我看看先
还得使用read()和write()函数写入数据结构或者字符串或者数值。
ios::binary必须与read()和write()函数搭配使用。
评论