以下是数值和字符串之间互相转换的两个函数。
1. 从字符串转换为整型数字。
int StrToNum(LPCTSTR _strIn)
{
int loop = 0;
int base = 0; //代表进制
int _retNum = 0;
CString cStr = _strIn;
if(0 == cStr.Find(_T("0x"), 0) || 0 == cStr.Find(_T("0X"), 0))
{
base = 16;
cStr.Delete(0,2);
//要检查参数字符串是否正确
}
else
{
base = 10;
//要检查参数字符串是否正确
}
for(loop=0; loop < cStr.GetLength(); loop++)
{
if(base == 10)
{
_retNum =_retNum *10 + ( cStr [loop]-0x30);
}
else if(base == 16)
{
if(cStr [loop] >= 'a' && cStr [loop] <= 'f')
{
_retNum = _retNum * 16 + cStr [loop] + 10 - 0x61;
}
else if(cStr [loop] >= 'A' && cStr [loop] <= 'F')
{
_retNum =_retNum * 16 + cStr [loop] + 10 - 0x41;
}
else if(cStr [loop] >='0' && cStr [loop] <= '9')
{
_retNum = _retNum * 16 + cStr [loop] - 0x30;
}
}
}
return _retNum;
}
2. 从数值转字符串的函数:
typedef enum
{
BASE_10, //代表十进制
BASE_16 //代表十六进制
}Base;
CStringA NumToStr(DWORD _numIn,, int _len, Base _base) //BASE_10 BASE_16
{
CStringA _resStr = “”;
char tempchar;
int loop = 0;
DWORD _tmpNum = _numIn,;
for(loop=0; loop < _len || 0==_len; loop++)
{
if(_base ==BASE_10)
{
tempchar = (char)( _tmpNum % 10);
tempchar = tempchar + 0x30;
_resStr.Insert(0,tempchar);
_tmpNum =_tmpNum /10;
if( 0 == _len && 0 == _tmpNum) //放在这里,如果_tmpNum为0,函数也能返回字符0
break;
}
else if(_base == BASE_16)
{
tempchar = (char)( _tmpNum % 16);
if(tempchar <= 9)
tempchar = tempchar + 0x30;
else
tempchar = tempchar + 0x61 - 10;
_resStr.Insert(0,tempchar);
_tmpNum = _tmpNum /16;
if( 0 == _len && 0 == _tmpNum) //放在这里,如果_tmpNum为0,函数也能返回字符0
break;
}
}
return _resStr;
}