您的位置:首页 > 其它

进制转换

2007-06-01 19:20 183 查看
//2进制转化为10进制
CString CTHVZZtest24Dlg::BinToDec(CString strBin)
{
CString strDec;
long nDec = 0, nLen;
int i, j, k;

nLen = strBin.GetLength();
for (i=0; i<nLen; i++)
{
if ( strBin[nLen-i-1] == '0' )
continue;
else
{
k = 1;
for(j=0; j<i; j++)
k = k * 2;
nDec += k;
}
}

strDec.Format("%ld", nDec);

return strDec;
}

//调用DecToHex,把2进制转化为10进制,再转化为16进制
CString CTHVZZtest24Dlg::BinToHex(CString strBin)
{
CString strDec,strHex;
strDec = BinToDec(strBin);
int nDec;
nDec = atol(strDec);
strHex.Format(_T("%02x"), nDec);
/*char hex[2];
sprintf(hex,"%02x",nDec);
strHex = hex;*/
return strHex;
}

//把16进制数转化为2进制
CString CTHVZZtest24Dlg::HexToBin(BYTE temp)
{
CString strDec, strBin;
char strHex[2];
//strHex = temp;
itoa(temp,strHex,16);
//16进制转化为10进制
DWORD dwHex = strtoul(strHex, NULL, 16);
strDec.Format(_T("%ld"), dwHex);
strBin = DecToBin(strDec);
//strBin[0]存放最高位
return strBin;
}

//把10进制数转化为2进制数
CString CTHVZZtest24Dlg::DecToBin(CString strDec)
{
int nDec = atoi(strDec);
int nYushu, nShang;
CString strBin = _T(""), strTemp;
TCHAR buf[2];
BOOL bContinue = TRUE;

while ( bContinue )
{
nYushu = nDec % 2;
nShang = nDec / 2;
sprintf(buf, "%d", nYushu);
strTemp = strBin;
strBin.Format("%s%s", buf, strTemp);
nDec = nShang;
if ( nShang == 0 )
bContinue = FALSE;
}

strTemp.Format(_T("%08s"),strBin);
strBin = strTemp;
return strBin;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: