VC++中实现二进制、十进制、十六进制之间的相互转换
5星 · 超过95%的资源 需积分: 13 103 浏览量
更新于2024-12-28
收藏 3KB TXT 举报
VC++ 中实现进制转换
VC++ 是一个功能强大且广泛应用的编程语言,它可以实现多种进制之间的转换。在本文中,我们将讨论如何在 VC++ 中实现二进制、十进制和十六进制之间的相互转换。
二进制到十进制的转换
在 VC++ 中,可以使用 CString 类来实现二进制到十进制的转换。下面是一个示例代码:
```cpp
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;
}
```
这个函数将二进制字符串转换为十进制字符串。它使用一个 for 循环来遍历二进制字符串,从右到左,每次遇到一个 '1' 都将其对应的权值加到结果中。
十进制到二进制的转换
十进制到二进制的转换可以使用以下代码:
```cpp
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;
}
return strBin;
}
```
这个函数将十进制字符串转换为二进制字符串。它使用一个 while 循环来将十进制数除以 2,余数作为二进制数字,然后将其添加到结果字符串中。
十六进制到十进制的转换
十六进制到十进制的转换可以使用以下代码:
```cpp
CString HexToDec(CString strHex)
{
CString strDec;
long nDec = strtol(strHex, NULL, 16);
strDec.Format("%ld", nDec);
return strDec;
}
```
这个函数将十六进制字符串转换为十进制字符串。它使用 strtol 函数将十六进制字符串转换为 long 型整数,然后将其格式化为十进制字符串。
十进制到十六进制的转换
十进制到十六进制的转换可以使用以下代码:
```cpp
CString DecToHex(CString strDec)
{
CString strHex;
long nDec = atol(strDec);
strHex.Format("%lx", nDec);
return strHex;
}
```
这个函数将十进制字符串转换为十六进制字符串。它使用 atol 函数将十进制字符串转换为 long 型整数,然后将其格式化为十六进制字符串。
在 VC++ 中实现进制转换需要使用CString 类和一些基本的数学运算。不同的进制之间的转换可以使用不同的算法和函数来实现。
2021-03-15 上传
2009-07-02 上传
点击了解资源详情
2018-04-08 上传
2011-12-06 上传
2010-05-26 上传
179 浏览量
Dogous
- 粉丝: 50
- 资源: 115
最新资源
- ActionScript.3.0.Cookbook.中文完整版
- Excel 金融计算教程
- 短信平台说明,提供ACTIVEX组件源代码 VC6++
- 接口与通讯精品讲义(工业自动化)
- GSM11.11 version 8.3.0 Release 1999
- 70-526: TS: Microsoft .NET Framework 2.0 - Windows-based Client Development
- FLASH四宝贝之-使用ActionScript.3.0组件
- DOS批处理高级教程精选合编
- S7-200通讯的编程步骤
- 电大程序设计基础复习题
- ARM系列嵌入式调试笔记
- db2 9 xml guide DB2 9 XML指南
- 高质量c++编程(林锐).pdf
- 复习的好资料 网络习题
- C8051系列单片机的选型
- 郭天翔 单片机 大学经历