请教字符串转换在debug版本成功,但在release版本运行失败的问题
我写了如下的转换函数,直接拿400F来转换,在release版本下无法运行,每次都会弹出AfxMessageBox("输入的16进制数据出错(应该为:0~9,A~F)!\n");这个设置的对话框,也就是说ch的值不在0~9或者A~F之间,会是什么问题引起的呀?
但是在debug版本下却能成功运行,各位高手指教一下,多谢。
/*-----------------------------------*/
//转换包含16进制的字符串到十进制整数
//限定:字符长度=4
//输入:待转换的16进制字符串.
//输出:转换结果10进制整数.
/*-----------------------------------*/
USHORT Transform::HexStrToDec()
{
UCHAR ch;
UINT out=0,temp=0;
CString In("400F");
for(int i=3;i>=0;i--)
{
ch=In.GetAt(i);
if(ch<='9' && ch>='0')
{
ch=ch-0x30;
}
else if(ch<='F'&&ch>='A')
{
ch=ch-0x37;
}
else
{
AfxMessageBox("输入的16进制数据出错(应该为:0~9,A~F)!\n");
return 0;
}
temp=ch;//将byte转换到long型.
temp=temp<<((3-i)*4);
out=out+temp;
}
return out;
}