文章目录
Index:190930-各种进制转换
前言
数据在传输过程中需要各种进制转换,以下为整理了常见的数据间的进制转换
1.十进制和二进制相互转换
1.1十进制转二进制
#include <bitset>
#include <iostream>
using namespace std;
void uDecToBin()
{
unsigned int uDec = 123;
bitset<10> bit(uDec); // bitset<n> bit(value) ps:n为二进制位数,value为输入的值
cout << bit << endl;
}
输出结果:0001111011
1.2二进制转十进制
1.2.1方法一
void sBinToDec()
{
string sBin("101101");
bitset<10> bit(sBin);
unsigned int uvalue = bit.to_ullong(); //bit.to_ullong()将字符串
cout << uvalue << endl;
}
输出结果:45
1.2.2方法二(推荐)
void sBinToDec2(string sBin)
{
string out = "101101";
unsigned int uvalue = stoi(out, nullptr, 2); // 字符串转整型
cout << uvalue <<endl;
}
输出结果:45
2.十进制和十六进制相互转换
2.1十六进制转十进制
2.1.1方法一
#include <sstream>
void HexToDec()
{
unsigned int uHex;
stringstream ss;
ss << hex << "0C"; //std::oct(八进制)、std::dec(十进制)
ss >> uHex;
cout << uHex<<endl;
}
输出结果:12
2.1.2方法二(推荐)
void HexToDec2()
{
string out = "0C";
int x = stoi(out, nullptr, 16);
cout << x <<endl;
}
输出结果:12
2.2十进制转十六进制
void DecToHex()
{
int x = 123 ;
string out;
stringstream ss;
ss << std::hex <<x;
ss >> out ;
cout << out <<endl;
}
输出结果:7b
3.二进制和十六进制相互转换
3.1二进制(字符串)转十六进制
void BinToHex()
{
string binary = "1011";
string hex;
stringstream ss;
ss << std::hex << stoi(binary, nullptr, 2); //std::hex必须加上std::
ss >> hex;
cout << hex <<endl;
}
输出结果:b
3.2十六进制(字符串)转二进制
void HexToBin()
{
string binary = "2A";
bitset<10> bit(stoi(binary, nullptr, 16));
cout << bit << endl;
}
输出结果:0000101010
4.字符串和十进制相互转换
4.1字符串转十进制
void DecStrToDec(string DecStr)
{
string str = "12345";
unsigned int uvalue = stoi(str);
cout << uvalue << endl;
}
输出结果:12345
4.2十进制转字符串
void DecToStr()
{
int a = 12345;
string str = to_string(a);
cout <<str << endl;
}
输出结果:12345
5.字符串和二进制相互转换
5.1字符串转二进制
void BinStrToBin()
{
string str = "1011";
bitset<10> bit(str);
cout << bit << endl;
}
输出结果:0000001011
5.2二进制(字符串)转字符串
void BinToStr()
{
bitset<10> bit("1011");
string str = bit.to_string();
cout << bit << endl;
}
输出结果:0000001011
6.十六进制字符串和十六进制串相互转换(例如0x11ff- 0x11 0xff)
19年10月15日前更新, 各种进制转换②(一篇就够)
编译:g++ -std=c++11 Transfer.cpp Transfer.h
源码入口: 提取码:8ujt
技术交流QQ群:916932330
[参考文档]
[1]: 蓬莱道人, C++中二进制、字符串、十六进制、十进制之间的转换
[2]: 这个程序员不太冷, C++ 中的各种进制转换函数整理
[3]:zwjjj, C++中的各种进制转换函数汇总及学习