进制转换
n进制转换为m进制(2 <= n,m <= 16)
#include<iostream>
#include<string>
using namespace std;
int CharToInt (char a) { //字母转数字
return '0'<=a && a<='9' ? a-'0':10+a-'A'; //大于10的特判(A:10,B:11, C:12, D:13, E:14, F:15)
}
char IntToChar (int a) { //数字转字母
return a<=9 ? '0'+a:a-10+'A';
}
int main() {
int output[33];
int n,m,dec = 0,num = 0;
string input;
cin >>n>>input>>m;
//原数字转为10进制
for (int i=0;i<input.size();i++) {
dec = dec*n + CharToInt(input[i]); //双倍法转换,见下面图解
}
//转成m进制
while(dec!=0) {
output[num++] = dec % m;
dec /= m;
}
//输出
for (int i=num-1;i>=0;i--)
cout << IntToChar(output[i]);
cout << endl;
return 0;
}
双倍法图解:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现