二进制,八进制,十六进制转十进制 c++

紧接着十进制转二进制,八进制,十六进制-CSDN博客这篇文章

输入一个二进制,八进制的数,怎样能转化为十进制呢?

原理如下:

K进制转十进制

按权相加法展开成一个多项式,每项是该位的数码与相应的权之积,把多项式按十进制数的规则进行求和,所得结果即是该数的十进制。

公式:abcd.efg(K)=d*K^0+c*K^1+b*K^2+a*k^3+e*K^-1+f*K^-2+g*K^-3(10)

例:1101.01(2)=1*2^0+0*2^1+1*2^2+1*2^3+0*2^-1+1*2^-2=1+0+4+8+0+0.25=13.25(10)

C知道的回答:

在C++中,可以使用以下方法将二进制数转换为十进制数:

  1. 使用字符串流(stringstream): 首先,将二进制数作为字符串输入到字符串流中,然后使用字符串流的输入运算符(>>)将其转换为十进制数。

    #include <iostream>
    #include <sstream>
    using namespace std;int binaryToDecimal(string binary) {stringstream ss;ss << binary;int decimal = 0;ss >> decimal;return decimal;
    }int main() {string binary = "101010";int decimal = binaryToDecimal(binary);cout << "Decimal: " << decimal << endl;//编者注:?答案=输入return 0;
    }
  2. 使用位运算: 可以使用位运算符和循环来逐位计算二进制数的十进制值。

    #include <iostream>
    using namespace std;int binaryToDecimal(string binary) {int decimal = 0;int power = 1;for (int i = binary.length() - 1; i >= 0; i--) {if (binary[i] == '1') {decimal += power;}power *= 2;}return decimal;
    }int main() {string binary = "101010";int decimal = binaryToDecimal(binary);cout << "Decimal: " << decimal << endl;return 0;
    }

如果懂得原理的话可以用,我又编了一段易理解的代码

#include<bits/stdc++.h>
using namespace std;
int main(){int k,n,a,b,c,d,e,f,g,h,i,j;cout<<"请输入数的进制(2或8):";cin>>k;if(k==2){cout<<"请输入一个二进制整数:";cin>>n;}if(k==8){cout<<"请输入一个八进制整数:";cin>>n;}a=n/1%10;b=n/10%10;c=n/100%10;d=n/1000%10;e=n/10000%10;f=n/100000%10;g=n/1000000%10;h=n/10000000%10;i=n/100000000%10;j=n/1000000000%10;cout<<"转换后的二进制(B)数为:";
cout<<a*1+b*k+c*k*k+d*k*k*k+e*k*k*k*k+f*k*k*k*k*k+g*k*k*k*k*k*k+h*k*k*k*k*k*k*k+i*k*k*k*k*k*k*k*k+j*k*k*k*k*k*k*k*k*k;return 0;
}

 

那十六进制转十进制呢?

C知道的回答:

在C++中,可以使用以下方法将十六进制数转换为十进制数:

  1. 使用标准库函数: 可以使用std::stoi函数将十六进制字符串转换为十进制整数。例如:

    #include <iostream>
    #include <string>int main() {std::string hexStr = "1A";int decimalNum = std::stoi(hexStr, nullptr, 16);//编者注:?此处有报错std::cout << "Decimal: " << decimalNum << std::endl;return 0;
    }

    输出结果为:Decimal: 26

  2. 使用自定义函数: 可以编写自定义函数来将十六进制数转换为十进制数。例如:

    #include <iostream>
    #include <string>int hexToDecimal(std::string hexStr) {int decimalNum = 0;int base = 1;int size = hexStr.size();for (int i = size - 1; i  0; i--) {//编者注:此处有误,应该为:for(int i=size-1;i>=0;i--)if (hexStr[i] >= '0' && hexStr[i] <= '9') {decimalNum += (hexStr[i] - '0') * base;} else if (hexStr[i] >= 'A' && hexStr[i] <= 'F') {decimalNum += (hexStr[i] - 'A' + 10) * base;} else if (hexStr[i] >= 'a' && hexStr[i] <= 'f') {decimalNum += (hexStr[i] 'a' + 10) * base;//编者注:此处有误,应该为:decimalNum+=(hexStr[i]='a'+10)*base;}base *= 16;}return decimalNum;
    }int main() {std::string hexStr = "1A";int decimalNum = hexToDecimal(hexStr);std::cout << "Decimal: " << decimalNum << std::endl;return 0;
    }

    输出结果为:Decimal: 26

(C知道的回答不包括编者注编者注为编者后期发现的错误)

 最后代码:

#include<bits/stdc++.h>
using namespace std;
int hexToDecimal(std::string hexStr) {int decimalNum = 0;int base = 1;int size = hexStr.size();for (int i = size - 1; i >= 0; i--) {if (hexStr[i] >= '0' && hexStr[i] <= '9') {decimalNum += (hexStr[i] - '0') * base;} else if (hexStr[i] >= 'A' && hexStr[i] <= 'F') {decimalNum += (hexStr[i] - 'A' + 10) * base;} else if (hexStr[i] >= 'a' && hexStr[i] <= 'f') {decimalNum += (hexStr[i] = 'a' + 10) * base;}base *= 16;}return decimalNum;
}
int main(){int k,a,b,c,d,e,f,g,h,i,j;cout<<"请输入数的进制(2,8或16):";cin>>k;if(k==2){int n;cout<<"请输入一个二进制(B)整数:";cin>>n;a=n/1%10;b=n/10%10;c=n/100%10;d=n/1000%10;e=n/10000%10;f=n/100000%10;g=n/1000000%10;h=n/10000000%10;i=n/100000000%10;j=n/1000000000%10;cout<<"转换后的十进制(D)数为:";cout<<a*1+b*k+c*k*k+d*k*k*k+e*k*k*k*k+f*k*k*k*k*k+g*k*k*k*k*k*k+h*k*k*k*k*k*k*k+i*k*k*k*k*k*k*k*k+j*k*k*k*k*k*k*k*k*k;}if(k==8){int n;cout<<"请输入一个八进制(O)整数:";cin>>n;a=n/1%10;b=n/10%10;c=n/100%10;d=n/1000%10;e=n/10000%10;f=n/100000%10;g=n/1000000%10;h=n/10000000%10;i=n/100000000%10;j=n/1000000000%10;cout<<"转换后的十进制(D)数为:";cout<<a*1+b*k+c*k*k+d*k*k*k+e*k*k*k*k+f*k*k*k*k*k+g*k*k*k*k*k*k+h*k*k*k*k*k*k*k+i*k*k*k*k*k*k*k*k+j*k*k*k*k*k*k*k*k*k;}if(k==16){std::string hexStr;std::cout<<"请输入一个十六进制(H)整数:";std::cin>>hexStr;int decimalNum = hexToDecimal(hexStr);std::cout << "转换后的十进制(D)数为:" << decimalNum;} return 0;
}

样例运行结果:

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何高速下载,百度 阿里 天翼 等网盘内的内容

如何高速下载&#xff0c;百度 阿里 天翼 等网盘内的内容&#x1f3c5; 前言教程下期更新预报&#x1f3c5; 前言 近段时间经常给大家分享各种视频教程&#xff0c;由于分享的资料是用迅雷网盘存的&#xff0c;但是绝大部分用户都是使用的某度&#xff0c;阿某的这些网盘&…

AI讲师大模型培训老师叶梓:大模型应用的方向探讨

大模型应用的关键方向及其落地案例可以从多个角度进行探讨&#xff0c;结合最新的研究和实际应用案例&#xff0c;我们可以更全面地理解这些技术如何推动社会和经济的发展。 Agent&#xff08;数字代理&#xff09;: 方向说明:Agent方向的AI技术旨在创建能够独立执行任务、做出…

vue-img-cutter 图片裁剪详解

前言&#xff1a;vue-img-cutter 文档&#xff0c;本文档主要讲解插件在 vue3 中使用。 一&#xff1a;安装依赖 npm install vue-img-cutter # or yarn add vue-img-cutter # or pnpm add vue-img-cutter 二&#xff1a;构建 components/ImgCutter.vue 组件 <script se…

去哪儿网机票服务请求体bella值逆向

作者声明&#xff1a;文章仅供学习交流与参考&#xff01;严禁用于任何商业与非法用途&#xff01;否则由此产生的一切后果均与作者无关&#xff01;如有侵权&#xff0c;请联系作者本人进行删除&#xff01; 一、加密定位 直接全局搜索bella&#xff0c;在可疑的地方下断&…

智能家居4 -- 添加接收消息的初步处理

这一模块的思路和前面的语言控制模块很相似&#xff0c;差别只是调用TCP 去控制 废话少说&#xff0c;放码过来 增添/修改代码 receive_interface.c #include <pthread.h> #include <mqueue.h> #include <string.h> #include <errno.h> #include <…

[初阶数据结构】单链表

前言 &#x1f4da;作者简介&#xff1a;爱编程的小马&#xff0c;正在学习C/C&#xff0c;Linux及MySQL。 &#x1f4da;本文收录于初阶数据结构系列&#xff0c;本专栏主要是针对时间、空间复杂度&#xff0c;顺序表和链表、栈和队列、二叉树以及各类排序算法&#xff0c;持…

k8s安装nginx Ingress超详细指南

在本全面的 Ingress 指南中&#xff0c;您将学习如何在 Kubernetes 上设置 Nginx Ingress控制器并使用 DNS 配置 Ingress。 目前有两种 Nginx Ingress 控制器。 kubernetes 社区的 Nginx Ingress 控制器Nginx Inc 开发的 Nginx Ingress 控制器 我们将使用 Kubernetes 社区 N…

论文分享[cvpr2018]Non-local Neural Networks非局部神经网络

论文 https://arxiv.org/abs/1711.07971 代码https://github.com/facebookresearch/video-nonlocal-net 非局部神经网络 motivation:受计算机视觉中经典的非局部均值方法[4]的启发&#xff0c;非局部操作将位置的响应计算为所有位置的特征的加权和。 非局部均值方法 NLM&#…

用keras识别狗狗

一、需求场景 从照片从识别出狗狗 from keras.applications.resnet50 import ResNet50 from keras.preprocessing import image from keras.applications.resnet50 import preprocess_input, decode_predictions import numpy as np# 加载预训练的ResNet50模型 model ResNet5…

Flask-HTTP请求、响应、上下文、进阶实验

本节主要目录如下&#xff1a; 一、请求响应循环 二、HTTP请求 2.1、请求报文 2.2、Request对象 2.3、在Flask中处理请求 2.4、请求钩子 三、HTTP响应 3.1、响应报文 3.2、在Flask中生成响应 3.3、响应格式 3.4、Cookie 3.5、session&#xff1a;安全的Cookie 四、…

【仪酷LabVIEW AI工具包案例】使用LabVIEW AI工具包+YOLOv5结合Dobot机械臂实现智能垃圾分类

‍‍&#x1f3e1;博客主页&#xff1a; virobotics(仪酷智能)&#xff1a;LabVIEW深度学习、人工智能博主 &#x1f384;所属专栏&#xff1a;『仪酷LabVIEW AI工具包案例』 &#x1f4d1;上期文章&#xff1a;『【YOLOv9】实战二&#xff1a;手把手教你使用TensorRT实现YOLOv…

数据结构学习——线性表、顺序表

1.线性表 线性表 &#xff08; linear list &#xff09; 是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一…

项目管理-项目资源管理2/2

项目管理&#xff1a;每天进步一点点~ 活到老&#xff0c;学到老 ヾ(◍∇◍)&#xff89;&#xff9e; 何时学习都不晚&#xff0c;加油 资源管理&#xff1a;6个过程“硅谷火箭管控” ①规划资源管理&#xff1a; 写计划 ②估算活动资源&#xff1a;估算团队资源&…

渗透之sql盲注(时间/boolean盲注)

sql盲注&#xff1a;sql盲注意思是我们并不能在web页面中看到具体的信息&#xff0c;我们只能通过输入的语句的真假来判断。从而拿到我们想要的信息。 我们通常使用ascii值来进行盲注。 目录 手动注入&#xff1a; 时间盲注&#xff1a; 布尔盲注&#xff1a; python脚本注…

LabVIEW波浪发电平台浮筒取能效率数据采集系统

LabVIEW波浪发电平台浮筒取能效率数据采集系统 随着化石能源的逐渐减少以及能源价格的上升&#xff0c;寻找可替代的、可再生的、清洁的能源成为了世界各国的共识。波浪能作为一种重要的海洋能源&#xff0c;因其巨大的潜力和清洁性&#xff0c;近年来受到了广泛关注。开发了一…

(六)JSP教程——out对象

out对象是在JSP中经常使用到的对象&#xff0c;它本质上是一个输出流&#xff0c;前面已经多次使用&#xff0c;我们经常使用它的print()和println()方法&#xff0c;这些方法主要用于实现客户端数据的输出。通过out对象也可以直接向客户端发送一个由程序动态生成的HTML文件。 …

Docker-Compose 容器集群的快速编排

Docker-compose 简介 Docker-Compose项目是Docker官方的开源项目&#xff0c;负责实现对Docker容器集群的快速编排。 Docker-Compose将所管理的容器分为三层&#xff0c;分别是 工程&#xff08;project&#xff09;&#xff0c;服务&#xff08;service&#xff09;以及容器&…

JavaEE企业级开发中常用的JDK7和JDK8的时间类

JDK7时间类 全世界的时间有一个统一的计算标准 在同一条经线上的时间是一样的 格林威治时间 简称GMT 计算核心 地球自转一天是24小时 太阳直射正好是12小时 但是误差太大 现在用原子钟来代替 用铯原子震动的频率来计算时间&#xff0c;作为世界的标准时间UTC 中国标准时间…

在国企分公司做信息宣传新闻投稿的经验分享

作为一名国企分公司的信息宣传工作者,我亲历了从传统投稿方式到数字化转型的全过程,这段经历既充满了挑战,也收获了成长。回首最初的日子,那些用邮箱投稿的时光,至今仍让我感慨万千。 初尝辛酸,邮箱投稿的艰难岁月 刚接手信息宣传工作时,我满腔热情,却很快被现实的冷水浇了个透…

c语言实现贪吃蛇小游戏————附全代码!!!

目录 1.Win32 API 1.1控制台应用程序 1.2控制台的名称&#xff0c;控制台窗口大小 1.3设置控制台光标位置 COORD - 光标坐标 GetStdHandle - 获取句柄 SetConsoleCursorPosition - 设置光标位置 封装一个设置光标的函数 1.4设置控制台光标的属性 CONSOLE_CURSOR_INFO …