C++中二进制字符串十六进制十进制之间的转换

Posted 静待花开s0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中二进制字符串十六进制十进制之间的转换相关的知识,希望对你有一定的参考价值。

 

1、十进制和二进制相互转换


(1)十进制转二进制

int a = 10;
bitset<10> bit(a);
cout << bit << endl;
 
输出:0000001010


(2)二进制转十进制

  

   第一种方法:

bitset<10> bit("010101");
int a = bit.to_ullong(); //这里为unsigned long long
cout << a << endl;
 
输出:21
    第二种方法: 

string out = "0101";
int x = stoi(out, nullptr, 2);
cout << x <<endl;
 
输出:5


2、字符串和二进制相互转换


(1)二进制转字符串

bitset<10> bit("010101");
string str = bit.to_string();
cout << str << endl;
 
输出:0000010101


(2)字符串转二进制

string str = "010101";
bitset<10> bit(str);    
cout << bit << endl;
 
输出:0000010101


3、字符串和十进制相互转换


(1)十进制转字符串

int a = 345;
string str = to_string(a);
cout <<str << endl;
 
输出:345


(2)字符串转十进制

string str = "3456";
int a = stoi(str);
cout << a << endl;
 
输出:3456


4、十进制和十六进制相互转换


(1)十六进制转十进制

  

  第一种方法:

#include <sstream>
 
int x;
stringstream ss;
ss << std::hex << "1A";  //std::oct(八进制)、std::dec(十进制)
ss >> x;
cout << x<<endl;
 
输出:26
    第二种方法:

string out = "1A";
int x = stoi(out, nullptr, 16);
cout << x <<endl;
 
输出:26


 (2)十进制转十六进制

int x = 26 ;
string out;
stringstream ss;
ss << std::hex <<x;
ss >> out ;
transform(out.begin(), out.end(), out.begin(), ::toupper);
cout << out <<endl;
 
输出:1A


5、二进制和十六进制


(1)二进制转十六进制

string binary = "11010101";
string hex;
stringstream ss;
ss << std::hex << stoi(binary, nullptr, 2);
ss >> hex;
transform(hex.begin(), hex.end(), hex.begin(), ::toupper);
cout << hex <<endl;
 
输出:D5


(2)十六进制转二进制

string binary = "D5";
bitset<8> bit(stoi(binary, nullptr, 16));
cout << bit << endl;
 
输出:11010101
 

 

转自https://blog.csdn.net/MOU_IT/article/details/89060249

以上是关于C++中二进制字符串十六进制十进制之间的转换的主要内容,如果未能解决你的问题,请参考以下文章

任意进制之间的转换(C++实现)

c++ 字符串转换16进制

C++中进制转换

java中进制之间的转换

通过例子进阶学习C++进制转换

c++中二进制字符串转化为十六进制字符串的函数,比如“11111111”转为对应的“FF”.