帮我用C++写一个类,实现10进制转换36进制,不够三位数补0,实现36进制转换10进制
时间: 2023-12-24 14:05:53 浏览: 105
好的,以下是一个简单的实现:
```c++
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
class BaseConverter {
private:
string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public:
string toBase36(int num) {
string result = "";
while(num > 0) {
int remainder = num % 36;
result = digits[remainder] + result;
num /= 36;
}
while(result.length() < 3) {
result = "0" + result;
}
return result;
}
int toBase10(string numStr) {
int result = 0;
int power = 0;
for(int i = numStr.length() - 1; i >= 0; i--) {
int digit = digits.find(numStr[i]);
result += digit * pow(36, power);
power++;
}
return result;
}
};
int main() {
BaseConverter converter;
int num = 12345;
string base36 = converter.toBase36(num);
cout << "The base-36 representation of " << num << " is " << base36 << endl;
string base36Str = "ABC";
int base10 = converter.toBase10(base36Str);
cout << "The base-10 representation of " << base36Str << " is " << base10 << endl;
return 0;
}
```
这个类包含两个方法:
- `toBase36(num)`:将十进制数 `num` 转换成 36 进制。返回值为 3 位的字符串,不足 3 位的左侧用零补齐。
- `toBase10(numStr)`:将 36 进制字符串 `numStr` 转换成十进制。
在 `main()` 函数里,我们创建了一个 `BaseConverter` 对象,并用它分别转换了一个十进制数和一个 36 进制字符串。
阅读全文