您的位置:首页 > 其它

十六进制字符串转十六进制数值的方法

2015-12-17 21:06 197 查看
void CStr2HEX_V1Dlg::OnOK()
{
// TODO: Add extra validation here
UpdateData(true);
int i,len;
__int64 temp2=0;
if(m_szASCII.IsEmpty())
{
MessageBox("请输入需要转换的十六进制字符串!","提示",MB_OK|MB_ICONERROR);
return;
}
len=m_szASCII.GetLength();
for(i=0;i<len;i++)
{
BYTE flag=TRUE;
if(m_szASCII.GetAt(i)<'0')    flag=FALSE;
if((m_szASCII.GetAt(i)>'f'))    flag=FALSE;
if((m_szASCII.GetAt(i)>'9')&&(m_szASCII.GetAt(i)<'A'))        flag=FALSE;
if((m_szASCII.GetAt(i)>'F')&&(m_szASCII.GetAt(i)<'a'))        flag=FALSE;
if(flag==FALSE)
{
MessageBox("输入的转换数据必须全为十六进制数[0-9][a-f][A-F]!","错误提示!",MB_OK|MB_ICONERROR);
GetDlgItem(IDC_EDIT_ASCII)->SetFocus();
return;
}
temp2=temp2*0x10+ASC2Hex(m_szASCII.GetAt(i));
}
m_szHEX.Format("0x%I64X",temp2);
UpdateData(FALSE);
//CDialog::OnOK();
}

unsigned char CStr2HEX_V1Dlg::ASC2Hex(unsigned char ch)
{
if((ch>='0')&&(ch<='9'))
{
return ch-'0';
}
else if((ch>='A')&&(ch<='F'))
{
return ch-'A'+0xA;
}
else if((ch>='a')&&(ch<='f'))
{
return ch-'a'+0xA;
}
else
{
return -1;
}
}


比如一个字符串为:"ABCDEF123456",可以转换成0xABCDEF123456
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: