问题如题
现在想将就收到的字符/数字等转换成十六进制,可不知从何入手,望指点迷津!
可以的话把子程序贴出来看看呗!
谢谢!
void AsciiToBcd(CString cs,unsigned char * p, int nlength/*字符串长度*/)
{
while(cs.GetLength()
cs="0"+cs;
for(int i=0;i
//*(p+i)=(cs.GetAt(i*2)-0x30)*16+(cs.GetAt(2*i+1)-0x30);
*(p+i)= chrToNum(cs.GetAt(i*2))*16+chrToNum(cs.GetAt(2*i+1));
}
int chrToNum(int u)
{
u = toupper(u);
if((u>='A' && u<= 'F'))
{
u = u - 'A' + 10;
}
else if(u>='0' && u<= '9')
{
u = u - '0';
}
else
{
u=0;
}
return u;
}
给你个我程序字符串的,你看看 不想改了!
你是不是想将 ASCII 码用十六进制字符串表示出来?
比如:ASCII 码的 1 表示为 31,A 表示为 41
十进制转换成16进制
char asc ='A';
unsinged char hex = ((asc/16)<<8) | (asc%16);
void CSeriesSampleDlg::OnSeriesRead(CWnd* pWnd,BYTE* buf,int bufLen) ////串口读取回调函数
{
CSeriesSampleDlg *pDlg = (CSeriesSampleDlg *)pWnd;
CEdit * pEdit;
pEdit = (CEdit*)pDlg->GetDlgItem(IDC_EDTRECV); //IDC_EDTRECV接收到的数据
CString strRecv = (char*)buf;
CString strOld;
pEdit->GetWindowText(strOld);
pEdit->SetWindowText(strOld + strRecv);
delete[] buf;
}
收到的是CString格式的,想变成十六进制显示。
你是想要
for(int a=0;a
{
strRecv.format(_T(" %x"), buf[a]);
}
strRecv += _T("\r\n");
??是这个吗?