当前位置: 首页 > 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.xdnf.cn/news/1396567.html

相关文章:

  • Tomcat 企业级运维实战系列(五):Tomcat 优化和安全加固
  • 简易TCP网络程序
  • 250830-Docker从Rootless到Rootful的Gitlab镜像迁移
  • 【Linux】网络安全管理:Netfilter、nftables 与 Firewalld | Redhat
  • Pmp项目管理方法介绍|权威详解与实战指南
  • 【超全汇总】MySQL服务启动命令手册(Linux+Windows+macOS)(上)
  • MYSQL速通(3/5)
  • Linux 830 shell:expect,ss -ant ,while IFS=read -r line,
  • 构建AI智能体:十八、解密LangChain中的RAG架构:让AI模型突破局限学会“翻书”答题
  • Python自定义函数形式参中的*args、**kwargs、*和/
  • STM32G474 IAP 双bank升级的坑
  • WebStorm无法识别@下的文件,但是可以正常使用
  • 【后端数据库】MySQL 索引生效/失效规则 + 核心原理
  • 腾讯云OpenCloudOS 9系统部署OpenTenBase数据库详细教程
  • 【云原生】Docker 搭建Kafka服务两种方式实战操作详解
  • php连接rabbitmq例子
  • 【序列晋升】21 Spring Cloud Gateway 云原生网关演进之路
  • 卷积神经网络项目:基于CNN实现心律失常(ECG)的小颗粒度分类系统
  • HAProxy 负载均衡全解析:从基础部署、负载策略到会话保持及性能优化指南
  • docker命令(二)
  • 现状摸底:如何快速诊断企业的“数字化健康度”?
  • PCIe 6.0 TLP深度解析:从结构设计到错误处理的全链路机制
  • 算法题(194):字典树
  • 从0到1玩转 Google SEO
  • Suno-API - OpenI
  • “FAQ + AI”智能助手全栈实现方案
  • Python从入门到高手9.4节-基于字典树的敏感词识别算法
  • 8月29日星期五今日早报简报微语报早读
  • 轮廓周长,面积,外接圆,外接矩形近似轮廓和模板匹配和argparse模块实现代码参数的动态配置
  • 【C++】掌握类模板:多参数实战技巧