VC 二进制 十进制 十六进制相互转换

下面是一个图例表示转换过程使用的函数

                                        BinToDec                 CString::Format
                               2 --------------------------> 10 ---------------------------> 16
                               2 <-------------------------- 10 <--------------------------- 16
                                        DecToBin                        strtoul

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

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值