1. 十进制转其他进制
1) 十转八进制
string l0to8(int a) {
string s = "";
while (a) {
int res = a % 8;
s = to_string(res)+s;
a /= 8;
}
return s;
}
2)十转二进制
string l0to2(int a) {
string s = "";
while (a) {
int res = a % 2;
s = to_string(res) + s;
a /= 2;
}
return s;
}
3) 十转十六进制
string l0to16(int a)
{
string b = "0123456789ABCDEF";
string s = "";
while (a) {
int res = a % 16;
a = a / 16;
s = b[res] + s;
}
return s;
}
2. 其他进制转十进制
1) 二进制转十进制
int twoTo10(string s) {
int sum = 0;
for (int i = s.size() - 1; i >= 0; i--) {
int tmp = s[i] - '0';
int t;
if (tmp == 1)
t = s.size() - i - 1;
else
t = 0;
sum = sum + pow(2,t);
}
return sum;
}
2) 八进制转十进制
int eightTo10(int a) {
int sum = 0;
int i = 0;
while (a) {
int res = a % 10;
sum += res*pow(8,i);
a /= 10;
i++;
}
return sum;
}
3) 十六进制转十进制
int hexTo10(string s) {
int sum = 0;
int res;
for (int i = s.size() - 1; i >= 0; i--) {
if (s[i] == 'A')res = 10;
else if (s[i] == 'B')res = 11;
else if (s[i] == 'C')res = 12;
else if (s[i] == 'D')res = 13;
else if (s[i] == 'E')res = 14;
else if (s[i] == 'F')res = 15;
else res = s[i] - '0';
sum = res* pow(16,s.size()-1-i) + sum;
}
return sum;
}