Just a blog
分类: C/C++
2012-03-26 13:43:21
CString BinToDec(CString strBin)
{
CString strDec;
long nDec = 0, nLen;
int i, j, k;
nLen = strBin.GetLength();
for (i=0; i { if ( strBin[nLen-i-1] == '0' ) continue; else { k = 1; for(j=0; j
k = k * 2; nDec += k; } } strDec.Format("%ld", nDec); return strDec; } 2. 10 进制 -----> 2 进制 CString 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; } int nTemp = strBin.GetLength()%4; switch(nTemp) { case 1: strTemp.Format(_T("000%s"), strBin); strBin = strTemp; break; case 2: strTemp.Format(_T("00%s"), strBin); strBin = strTemp; break; case 3: strTemp.Format(_T("0%s"), strBin); strBin = strTemp; break; default: break; } return strBin; } 3. 2进制 -----> 16进制 2进制先转换为10进制,再转换为16进制 CString strDec, strBin, strHex; strBin = _T("1110"); strDec = BinToDec(strBin); int nDec; nDec = atol(strDec); strHex.Format(_T("%x"), nDec); 4. 10 进制 -----> 16 进制 int nDec = 10; CString str; str.Fomat(_T("%x"), nDec); 5. 16 进制 -----> 10 进制 CString strDec, strHex; strHex = _T("af"); DWORD dwHex = strtoul(strHex, NULL, 16); strDec.Format(_T("%ld"), dwHex); 6. 16 进制 -----> 2 进制 16进制先转换为10进制,再转换为2进制 CString strDec, strBin, strHex; strHex = _T("af"); DWORD dwHex = strtoul(strHex, NULL, 16); strDec.Format(_T("%ld"), dwHex); strBin = DecToBin(strDec);