class Solution {
public:
string convertToBase7(int num) {
return tenToR(num, 7);
}
private:
const string words = "0123456789abcdef";
string tenToR(int num, const char R) {
// 特判0
if (num == 0) {
return "0";
}
// 处理负数
long long n = num;
string flag;
if (n < 0) {
flag = "-";
n = -n;
}
string s;
while(n) {
int idx = n%R;
n /= R;
s += words[idx];
}
reverse(s.begin(), s.end());
return flag + s;
}
};
当转16进制时
class Solution {
public:
string toHex(int num) {
if (num == 0) {
return "0";
}
string sb;
for (int i = 7; i >= 0; i --) {
int val = (num >> (4 * i)) & 0xf;
if (sb.length() > 0 || val > 0) {
char digit = val < 10 ? (char) ('0' + val) : (char) ('a' + val - 10);
sb.push_back(digit);
}
}
return sb;
}
};