1.十进制与二进制之间的互相转化
(1)十进制转8位二进制数
in a = 10;
bitset<8>bit(a);
cout << bit;
(2)二进制转10进制
bitset<8>bit("00001011");
int a = bit.to_ullong();//二进制转整数
cout << a;
2.二进制与字符串相互转化
(1)字符串转二进制
string s = “00001011”;
bitset<8> bit(s);
cout << s;
(2)二进制转字符串
bitset<8> bit("00001011");
string s = bit.to_string();
cout << s;
3.字符串和十进制相互转换
(1)十进制转字符串
int a = 345;
string str = to_string(a);
cout << str;
(2)字符串转十进制
string s = "345";
int a = stoi(s);
int b = atoi(s.c_str());
cout << a << b;
方法二
int strToInt(string str) {
stringstream ss(str);
int d ;
ss >> d;
return d;
}
}
十进制和十六进制相互转换
(1)十六进制转十进制
string out = "IA";
int x = stoi(out, 0, 16);
cout << x;
int hexToDec(string hex) {
int n;
for(int i = 0; i < hex.size(); i++) {
if(hex[i] >= '0' && hex[i] <= '9') {
n += (hex[i] -'0')*pow(16, hex.size() -i - 1);
}
else {
n += (hex[i] -'A' + 10)*pow(16, hex.size() -i - 1);
}
}
return n;
}
(2)十进制转十六进制
方法一
string decToHex(string dec) {
int d = stoi(dec);
string s;
char c;
int x;
if(d == 0) return to_string(0);
while(d!=0) {
x = d % 16;
if(x < 10) {
c = x + '0';
}
else {
c = x -10 + 'A';
}
s += c + s;
d /= 16;
}
return s;
}
方法二
string decToHex(string dec) {
string s;
string t = "0123456789ABCDEF";
int d = stoi(dec);
int x;
if(d == 0) return to_string(0);
while(d) {
x = d%16;
s += t[x] + s;
d /= 16;
}
return s;
}