C++中的数制转换工具

一、引言

在编程和日常计算中,我们经常需要在不同的数制之间进行转换。二进制、十进制和十六进制是最常用的数制。二进制是计算机内部处理数据的基础,十进制是我们日常生活中最常用的数制,而十六进制则在编程和硬件相关领域中广泛使用。

二、数制转换工具的实现

下面是一个使用C++编写的简单数制转换工具,该工具包含了二进制、十进制和十六进制之间的转换功能。

  1. 二进制转十进制
int binaryToDecimal(const std::string& binary) {
    int decimal = 0, base = 1;
    int len = binary.length();
    for (int i = len - 1; i >= 0; --i) {
        if (binary[i] == '1') {
            decimal += base;
        }
        base *= 2;
    }
    return decimal;
}

这段代码通过遍历二进制字符串,从右到左计算每个位上的值,并累加到decimal变量中。

  1. 十进制转二进制
std::string decimalToBinary(int decimal) {
    std::string binary = "";
    while (decimal > 0) {
        binary = (decimal % 2 == 0 ? '0' : '1') + binary;
        decimal /= 2;
    }
    return binary;
}

该函数通过不断除以2并取余数,得到二进制的每一位,直到十进制数为0。

  1. 十进制转十六进制与十六进制转十进制

使用C++标准库中的stringstreamhex操作符可以方便地实现十进制和十六进制之间的转换。

std::string decimalToHexadecimal(int decimal) {
    std::stringstream ss;
    ss << std::hex << std::uppercase << decimal;
    return ss.str();
}

int hexadecimalToDecimal(const std::string& hexadecimal) {
    std::stringstream ss(hexadecimal);
    int decimal;
    ss >> std::hex >> decimal;
    return decimal;
}
  1. 主函数与用户交互

主函数main()负责处理用户输入和输出,以及调用上述转换函数。用户首先选择一个转换选项,然后输入相应的数字。程序将根据用户的选择进行相应的数制转换,并输出结果。

int main() {
    int choice;
    std::string input;
    std::cout << "请输入您的选择:\n";  
    std::cout << "1. 二进制转十进制\n";  
    std::cout << "2. 二进制转十六进制\n";  
    std::cout << "3. 十进制转二进制\n";  
    std::cout << "4. 十进制转十六进制\n";  
    std::cout << "5. 十六进制转二进制\n";  
    std::cout << "6. 十六进制转十进制\n";
    std::cin >> choice;

      std::cout << "请输入数字: ";  
    std::cin >> input;  
  
    std::transform(input.begin(), input.end(), input.begin(), ::tolower); // 转换为小写以进行十六进制转换  
  
    switch (choice) {  
        case 1: // 二进制转十进制  
            std::cout << "十进制: " << binaryToDecimal(input) << std::endl;  
            break;  
        case 2: // 二进制转十六进制  
            std::cout << "十六进制: " << decimalToHexadecimal(binaryToDecimal(input)) << std::endl;  
            break;  
        case 3: // 十进制转二进制  
            std::cout << "二进制: " << decimalToBinary(std::stoi(input)) << std::endl;  
            break;  
        case 4: // 十进制转十六进制  
            std::cout << "十六进制: " << decimalToHexadecimal(std::stoi(input)) << std::endl;  
            break;  
        case 5: // 十六进制转二进制  
            std::cout << "二进制: " << decimalToBinary(hexadecimalToDecimal(input)) << std::endl;  
            break;  
        case 6: // 十六进制转十进制  
            std::cout << "十进制: " << hexadecimalToDecimal(input) << std::endl;  
            break;  
        default:  
            std::cout << "选择无效!" << std::endl;  
    }  
    return 0;  
}

三、结论与展望

本文介绍了一个简单的C++数制转换工具,该工具可以方便地实现二进制、十进制和十六进制之间的转换。这个工具可以作为编程初学者学习和实践数制转换的一个好例子。未来,可以进一步扩展该工具的功能,例如支持其他数制(如八进制)或添加更多的用户交互和错误处理功能。

四、代码输出结果演示

请输入您的选择:
1. 二进制转十进制
2. 二进制转十六进制
3. 十进制转二进制
4. 十进制转十六进制
5. 十六进制转二进制
6. 十六进制转十进制
1
请输入数字: 0101
十进制: 5

我会在这个项目合集中分享一些小项目的代码和小游戏,另外会在同名 公众号(鲨鱼编程) 和我的博客鲨鱼编程上同步解析,这些代码都很简单易懂,而且能够帮助你巩固C/C++的知识,提高编程能力。🚀

在这里插入图片描述

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲨鱼编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值