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++的知识,提高编程能力。🚀

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/572511.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

不要摆摊,不要开早餐店,原因如下

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 我最近开通了视频号会员专区嘛&#xff0c;专区有个问答功能可以提问&#xff0c;有个会员问了我问题&#xff0c;其中一条问答分享给大家&#xff1a; 松哥&#xff0c;突然想去兼职&#xff0c;早上卖点杂粮煎饼果…

小塔 | 时尚领域RFID应用,别人早你一步!

优衣库&#xff0c;作为知名服装品牌零售商&#xff0c;近年来在数字化转型的道路上取得了显著的成果。其中&#xff0c;RFID技术的应用成为了优衣库提升运营效率、优化客户体验以及实现精准营销的重要工具。 RFID助力时尚门店品牌升级 优衣库深知RFID技术的潜力&#xff0c;将…

web--跨域,cors,jsonp,域名接管劫持

同源策略 可以放在csrf cosp 解决同源策略 它会将会从xiaodi这个网站中去获取资源&#xff0c;然后发送给localhost这个网站 就获取到了资源 jsonp 就是这个网站的回调信息有个人的数据 就看callback有没有回调信息 域名接管 当右边两个域名过期&#xff0c;就可以注册它的域名…

Git 安装及配置教程(Windows)【安装】

文章目录 一、 下载1. 官网下载2. 其它渠道 二、 安装三、 配置四、 更新 软件 / 环境安装及配置目录 一、 下载 1. 官网下载 安装地址&#xff1a;https://git-scm.com/download 2. 其它渠道 &#xff08;1&#xff09;百度网盘&#xff08;2.44.0 版本&#xff09; 链接…

使用FPGA实现逐级进位加法器

介绍 逐级进位加法器就是将上一位的输出作为下一位的进位输入&#xff0c;依次这样相加。下面以一个8位逐级进位加法器给大家展示。 我增加了电路结构&#xff0c;应该很容易理解吧。 下面我也列举了一位加法器&#xff0c;可以看下。 电路结构 设计文件 1位加法器 librar…

【Python爬虫】爬取淘宝商品数据——新手教程

大数据时代&#xff0c; 数据收集不仅是科学研究的基石&#xff0c; 更是企业决策的关键。 然而&#xff0c;如何高效地收集数据 成了摆在我们面前的一项重要任务。 本文将为你揭示&#xff0c; 一系列实时数据采集方法&#xff0c; 助你在信息洪流中&#xff0c; 找到…

SpringCloud基础 Consul的引入

前言 首先是为什么引入consul这个组件 我们知道微服务分为很多个模块,这里模块中相互调用,我使用硬编码的模式是不好的 比如微服务模块需要更新的时候,我们使用硬编码的方式可能需要修改很多个地方 但是使用consul之后,就引入了注册中心,我们只需要将对应的服务注册为节点 这样…

重生奇迹MU召唤术师攻略(重生奇迹MU召唤技能)

1、召唤术师&#xff0c;重生奇迹MU的强力职业之一。跟格斗家一样&#xff0c;需要RMB购买资格证才能够使用的一个职业&#xff0c;召唤术师可以说是对于玩家将职业玩法的一种总结性职业&#xff0c;这个职业虽然叫做召唤术师&#xff0c;但是整个重生奇迹MU里唯一能够召唤宝宝…

SpringBoot3 + Kotlin + mybatis-plus + Swagger3后端开发样例

前言&#xff1a; Kotlin 是一种在 JVM&#xff08;Java 虚拟机&#xff09;、Android 和浏览器端运行的静态类型编程语言。以下是关于 Kotlin 的总结介绍&#xff1a; 1、语言特性&#xff1a; 简洁性&#xff1a;Kotlin 旨在提供简洁且安全的代码&#xff0c;同时保持与 Jav…

解决“ImportError: DLL load failed while importing _rust: 找不到指定的程序的问题

运行 scrapy startproject wikiSpider 报错&#xff1a;ImportError: DLL load failed while importing _rust: 找不到指定的程序。 经过尝试 可以更换Python解释器版本来解决 1、点击crtlalts打开设置 点击项目>解释器 选择3.11解释器 &#xff08;我原来报错用的3.9的解…

C++11(第一篇)【C/C++复习版】

目录 1、统一的列表初始化 2、所有容器新增initializer_list构造 3、auto、decltype和typeid 4、nullptr 5、 范围for 6、STL中的变化 array&#xff08;新容器&#xff09; forward_list&#xff08;新容器&#xff09; cbegin、cend、crbegin、crend&#xff08;新方法…

WEB网站服务器安全漏洞扫描环境搭建及漏洞工具扫描

一、适用环境 1、企业自建有门户网站&#xff1b; 2、使用Struts框架的WEB网站&#xff1b; 3、网站服务器涉及有数据库之类的项目&#xff0c;如&#xff1a;微信登录、手机登录、充值、收费等。 4、使用安卓版、苹果版、电脑版结合的缴费类网站平台。 5、方便但需提高安全性…

linux-centos修改时区时间

修改时区为北京时间 先输入tzselect&#xff0c;输入5&#xff0c;再输入9&#xff0c;再输入1&#xff0c;最后再输入1就行了 修改系统时间和硬件时间 查看当前时间 命令date修改系统时间 命令date -s "2024-04-21 18:30:30"查看硬件时间 命令hwclock --show修改…

AIGC Chat GPT 用思维导图总结,数据分析所需要掌握的Excel知识

你还不会制作思维导图吗&#xff1f; 现在已经可以零门槛一键生成&#xff0c;只需跟AI说一句话&#xff0c;就能完成&#xff01;&#xff01;&#xff01; 生成一个思维导图&#xff0c;主题是数据分析师需要掌握的Excel知识&#xff0c;在新窗口生成思念导图。 AIGC ChatG…

ONES 功能上新|ONES Wiki 新功能一览

支持在 ONES Wiki 页面中使用分栏进行横向排版&#xff0c;丰富排版方式&#xff0c;帮助用户以更丰富的版式展示内容。 应用场景&#xff1a; 页面的布局对内容的阅读有很大的影响。当页面中有图文混排的需求时&#xff0c;可以通过分栏来组织页面结构&#xff0c;以更清晰、更…

倾囊相授,ChatGPT干货技巧全在这里!如果没有这个方法我不可能学好ChatGPT

ChatGPT虽然已经问世一年多&#xff0c;但不少朋友还处于刚接触的阶段。于是&#xff0c;我们特别梳理了一些常见问题&#xff0c;尝试着用通俗的语言解释清楚这些内容。 1. ChatGPT的官方网址 https://www.chatgpt.com 你只要Google搜索能打开&#xff0c;这个网址肯定能打开。…

2024年成都市“蓉贝”软件人才年度评估及资金支持申报对象内容、材料要求

一、申报对象 经2023年评估合格的第一批&#xff08;2019年评聘&#xff09;、第二批&#xff08;2020年评聘&#xff09;、第三批&#xff08;2021年评聘&#xff09;“蓉贝”软件人才&#xff0c;2022年评聘的第四批“蓉贝”软件人才。 二、评估内容 &#xff08;一&#…

java和python刷题的一些语法规则总结(未完成)

语法总结 Java篇1、代码补全2、编程题中常用头文件3、编程题常用的内置方法4、模版 Python篇1、2、编程题中常用的头文件3、编程题中常用的内置方法4、伪代码模版 去哪练习&#xff1f; 1、LeetCode上有个面试模拟 2、牛客公司真题&#xff08;ACM模式&#xff09; ⚠️ 笔试均…

AI-数学-高中-44导数的运算法则

原作者视频&#xff1a;【导数】【一数辞典】3导数的运算法则&#xff08;略难&#xff09;_哔哩哔哩_bilibili 三种求导表达方式一样的&#xff0c;中间的比较常用&#xff1a; 链式法则&#xff1a;从外向内&#xff1a;

Vue3 实现 Three.js粒子特效

效果 <template><div id"waves" /> </template><script setup> import { ref, onMounted, onUnmounted } from "vue"; import * as THREE from "three";const amountX ref(50); const amountY ref(50); const color …
最新文章