当前位置: 首页 > news >正文

C++中的数学问题---进制转换

二进制转十六进制

string binToHex(string bin){string hex="";if(bin.size()%4!=0){for(int i=0;i<(4-bin.size()%4);i++){bin="0"+bin;}}for(int i=0;i<bin.size();i+=4){string tmp=bin.substr(i,4);bitset<4>b(tmp);hex+=b.to_ulong()<10?char(b.to_ulong()+'0'):char(b.to_ulong()+'A'-10);}return hex;
}

十六进制转二进制

string hexToBin(string hex){bitset<8>s(stoi(hex,nullptr,16));return s.to_string();
}

测试demo

#include <iostream>
#include<sstream>
#include<cstring>
#include<cctype>
#include<bitset>
using namespace std;string binToHex(string bin){string hex="";if(bin.size()%4!=0){for(int i=0;i<(4-bin.size()%4);i++){bin="0"+bin;}}for(int i=0;i<bin.size();i+=4){string tmp=bin.substr(i,4);bitset<4>b(tmp);hex+=b.to_ulong()<10?char(b.to_ulong()+'0'):char(b.to_ulong()+'A'-10);}return hex;
}string hexToBin(string hex){bitset<8>s(stoi(hex,nullptr,16));return s.to_string();
}
int main() {string str="FF";cout<<"hex is : "<<str<<endl;cout<<"hexToBin: ";cout<<hexToBin(str)<<endl;cout<<"binToHex: ";cout<<binToHex(hexToBin(str))<<endl;return 0;
}

运行结果

十进制转二进制

long long  decToBin(int dec){long long   res = 0, j = 1;while(dec){res = res + j * (dec % 2);dec = dec / 2;j = j * 10;}return res;
}

二进制转十进制

int binToDec(string str){int res=0;for(int i=0;i<str.size();i++){int num=str[i]-'0';res=res*2+num;}return res;
}

测试demo

#include <iostream>
#include<sstream>
#include<cstring>
#include<cctype>
using namespace std;long long  decToBin(int dec){long long   res = 0, j = 1;while(dec){res = res + j * (dec % 2);dec = dec / 2;j = j * 10;}return res;
}int binToDec(string str){int res=0;for(int i=0;i<str.size();i++){int num=str[i]-'0';res=res*2+num;}return res;
}
int main() {int num;while (cin >>num) { cout<<"num is : "<<num<<endl;cout<<"decToBin: ";cout<<decToBin(num)<<endl;cout<<"binToDec: ";cout<<binToDec(to_string(decToBin(num)))<<endl;}return 0;
}

测试结果

http://www.lryc.cn/news/95416.html

相关文章:

  • 开发一个RISC-V上的操作系统(三)—— 串口驱动程序(UART)
  • nuxt项目部署,npm run build 和npm run generate的区别
  • 数据仓库设计理论
  • 数据接口有哪些?(数据接口有哪几种)
  • 华为云CodeArts产品体验的心得体会及想法
  • 下载安装:SQLite+SQLiteStudio+VS
  • nginx路由
  • MobPush Android SDK 厂商推送限制
  • 计算机网络 day7 扫描IP脚本 - 路由器 - ping某网址的过程
  • gitee 配置ssh 公钥(私钥)
  • JAVA面试总结-Redis篇章(七)——数据淘汰策略
  • [SQL挖掘机] - 算术函数 - round
  • php-golang-rpc spiral/goridge库和php spiral/goridge2.4.5实践
  • 关于Kubernetes的一些零碎想法
  • C—数据的储存(下)
  • 「软件测试面试干货」2023年软件测试面试题大全(持续更新)附答案..
  • YOLOv2论文对比总结
  • 数据中心机房机柜配电新模式的探讨与选型
  • Redis未授权访问漏洞
  • Python 各种进制转换
  • 关于K8s的Pod的详解(一)
  • Vue3通透教程【十六】TS编译配置
  • OpenCV系列__chapter2
  • Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么
  • hcip mgre与rip实验
  • 骨传导耳机对身体有没有别的危害?骨传导耳机有什么好处?
  • c++11/c++98动态规划入门第5课,经典DP问题 --- 区间
  • vue中重新获取数据导致页面加长,要求在页面更新之后浏览器滚动条滚动到之前浏览记录的位置。以及获取当前页面中是哪个元素产生滚动条的方法。
  • 【深度学习】日常笔记14
  • [JAVAee]synchronized关键字