怎么将十六进制的数用ASCii码显示出来
如何将十六进制的数用ASCii码显示出来?
如何将十六进制的数用ASCii码显示出来?
例如将十六进制的数:“0x65 0x66 0x67 0x68”通过Edit Control编辑控件显示出来为:ABCD。
代码该如何实现以上功能,感谢~
------解决方案--------------------
“0x65 0x66 0x67 0x68”,是字符串还是什么格式的
------解决方案--------------------
如何将十六进制的数用ASCii码显示出来?
例如将十六进制的数:“0x65 0x66 0x67 0x68”通过Edit Control编辑控件显示出来为:ABCD。
代码该如何实现以上功能,感谢~
------解决方案--------------------
“0x65 0x66 0x67 0x68”,是字符串还是什么格式的
------解决方案--------------------
- C/C++ code
// void CAviParserView::ShowHex(LPBYTE pBuf,DWORD length,BOOL cleanPre) { CEdit &Edit=GetEditCtrl(); if(cleanPre) { Edit.SetSel(0,-1,FALSE); Edit.Clear(); } // CString strTmp; CString valTmp; CString asciiTmp; // int rest=length%16; int row =length/16; for (int jj=0;jj<row;jj++) { strTmp=""; asciiTmp=""; for(int kk=0;kk<16;kk++) { valTmp.Format("%02X ",pBuf[jj*16+kk]); strTmp += valTmp; if(pBuf[jj*16+kk]>=' ') asciiTmp += pBuf[jj*16+kk]; else asciiTmp += '.'; } strTmp += asciiTmp; strTmp += "\r\n"; Edit.SetSel(-1,-1); Edit.ReplaceSel(strTmp); } if(rest != 0) { strTmp=""; asciiTmp=""; for (int r=0;r<rest;r++) { valTmp.Format("%02X ",pBuf[row*16+r]); strTmp += valTmp; if(pBuf[row*16+r]>=' ') asciiTmp += pBuf[row*16+r]; else asciiTmp += '.'; } strTmp += " ";//48 strTmp = strTmp.Left(48); strTmp += asciiTmp; strTmp += "\r\n"; Edit.SetSel(-1,-1); Edit.ReplaceSel(strTmp); } }
------解决方案--------------------
0x65 0x66 0x67 0x68 是efgh吧?
------解决方案--------------------
如果是数字:
char a;
unsigned char b;
b=0x65;
a=b;//没试过,如果不好使,就用这个函数itoa函数
------解决方案--------------------
直接赋值即可
- C/C++ code
char a=0x65
------解决方案--------------------
- C/C++ code
CString strText(_T("0x65 0x66 0x67 0x68")); int curPos = 0; LPCTSTR lpszToken = _T(" "); CString strToken = strText.Tokenize(lpszToken, curPos); CString strMsg(_T("")); while(_T("") != strToken) { strMsg.AppendFormat(_T("%c"), (TCHAR)_tcstoul(strToken, NULL, 16)); strToken = strText.Tokenize(lpszToken, curPos); } AfxMessageBox(strMsg);