2 10 16进制 互相转换

1. 2 进制 -----> 10 进制

CString 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; }

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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值