当前位置: 首页 > news >正文

进制转换问题

目录

十进制转其他进制(2-10)

递归形式

其他进制转十进制

递归形式

十进制转十六进制(大写)

十六进制转十进制

完整版

其他进制之间的转换

十进制转其他进制(2-10)

//通用进制转换函数
//十进制转其他进制(2-10)
int decimalToBase(int num, int base) {int res = 0;//此处涉及到结果储存问题://1.数字,需要移位,不能直接相加//2.字符串,需要转换,但在末尾插入简单int m=1;while (num) {res += (num % base) * m;m *= 10;num /= base;}return res;
}

递归形式

//递归形式
int decimalToBase(int num, int base) {if (num == 0)return 0;return num % base + 10*decimalToBase(num / base, base);
}

其他进制转十进制

int baseToDecimal(int num, int base) {int res = 0;int m = 1;while (num) {//此处注意m要变化res += m*(num % 10);m *= base;num /= 10;}return res;
}

递归形式

//递归形式
int baseToDecimal(int num, int base) {if (num == 0)return 0;return num % 10 + base*baseToDecimal(num / 10, base);
}

两个递归形式结构一样

十进制转十六进制(大写)

//十六进制的储存可以是string类型,也可以是int数组(输出时要将大于9的进行转换)
string decimalToHex(int num) {string res="";char c;while (num) {if (num % 16  <= 9) {c = num % 16+'0';//此处注意int转char}else {c = 'A' + num % 16 - 10;}res += c;num /= 16;}reverse(res.begin(),res.end());//注意反转return res;
}

十六进制转十进制

int hexToDecimal(string num) {int len = num.length();int res = 0;int m = 1;for (int i = len-1;i >=0;i--) {if (num[i] >= 'A' && num[i] <= 'Z') {res += m*(num[i] - 'A'+10);}else {res += m*(num[i] - '0');}m *= 16;}return res;
}

完整版

#include <bits/stdc++.h> 
using namespace std;
//通用进制转换函数
//十进制转其他进制(2-10)
int decimalToBase(int num, int base) {int res = 0;//此处涉及到结果储存问题://1.数字,需要移位,不能直接相加//2.字符串,需要转换,但在末尾插入简单int m=1;while (num) {res += (num % base) * m;m *= 10;num /= base;}return res;
}
//递归形式
int decimalToBase(int num, int base) {if (num == 0)return 0;return num % base + 10*decimalToBase(num / base, base);
}
//其他进制转十进制
int baseToDecimal(int num, int base) {int res = 0;int m = 1;while (num) {//此处注意m要变化res += m*(num % 10);m *= base;num /= 10;}return res;
}
//递归形式
int baseToDecimal(int num, int base) {if (num == 0)return 0;return num % 10 + base*baseToDecimal(num / 10, base);
}
//十进制转十六进制(大写)
//十六进制的储存可以是string类型,也可以是int数组(输出时要将大于9的进行转换)
string decimalToHex(int num) {string res="";char c;while (num) {if (num % 16  <= 9) {c = num % 16+'0';}else {c = 'A' + num % 16 - 10;}res += c;num /= 16;}reverse(res.begin(),res.end());return res;
}
//十六进制转十进制
int hexToDecimal(string num) {int len = num.length();int res = 0;int m = 1;for (int i = len-1;i >=0;i--) {if (num[i] >= 'A' && num[i] <= 'Z') {res += m*(num[i] - 'A'+10);}else {res += m*(num[i] - '0');}m *= 16;}return res;
}
int main() {//cout << decimalToBase(8,2);//cout << baseToDecimal(110,8);//cout<<decimalToHex(165);cout << hexToDecimal("A5");return 0;
}

其他进制之间的转换

1.借助十进制中转

2.二的幂次进制之间转换可以借助二进制中转

http://www.dtcms.com/a/358799.html

相关文章:

  • 【车载开发系列】CAN与CANFD上篇
  • 前端代码结构详解
  • Python数据处理
  • 6.1 Update不能写复杂的逻辑
  • ReconDreamer
  • 前端浏览器调试
  • Python爬虫实战:构建Widgets 小组件数据采集和分析系统
  • Apple登录接入记录
  • Spring AI 的应用和开发
  • 突发,支付宝发布公告
  • GitHub 热榜项目 - 日榜(2025-08-30)
  • Unity笔记(八)——资源动态加载、场景异步加载
  • DbVisualizer:一款功能强大的通用数据库管理开发工具
  • 自动修改psd_生成套图 自动合并图片 自动生成psd文字层
  • Go 语言面试指南:常见问题及答案解析
  • 【具身智能】【机器人动力学】台大林佩群笔记-待持续更新
  • 索引结构与散列技术:高效数据检索的核心方法
  • HTS-AT模型代码分析
  • Shell脚本编程入门:从基础语法到流程控制
  • 本地运行 Ollama 与 DeepSeek R1 1.5B,并结合 Open WebUI 测试
  • 告别图片处理焦虑:用imgix实现智能、实时且高效的视觉媒体交付(含案例、截图)
  • Linux shell命令扩涨
  • HarmonyOS Router 基本使用详解:从代码示例到实战要点
  • 免费开源的 Gemini 2.5 Flash 图片生成器
  • Robolectric如何启动一个Activity
  • Coze源码分析-API授权-删除令牌-后端源码
  • SQL注入6----(其他注入手法)
  • 普蓝自研AutoTrack-4X导航套件平台适配高校机器人实操应用
  • 《Java反射与动态代理:从原理到实践》
  • 以声为剑,绘山河热血——刘洋洋《不惧》8月30日全网上线