进制转换

//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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值