小言_互联网的博客

各种进制转换①(一篇就够)

677人阅读  评论(0)


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++中的各种进制转换函数汇总及学习


转载:https://blog.csdn.net/yabxingzi/article/details/101485187
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场