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

十进制转任意进制(以及任意进制来回转换<了解>)

 十进制转任意进制:

#include <iostream> 
#include <vector>   
#include <string>   using namespace std; // 将十进制数转换为P进制形式的字符串
string toBase(int num, int base) {string result = ""; // 初始化结果字符串为空while (num > 0) { // 当num大于0时执行循环int digit = num % base; // 计算num除以base的余数char digitChar; // 定义字符变量用于表示余数对应的字符if (digit >= 10) { // 如果余数大于等于10digitChar = 'A' + digit - 10; // 将余数转换为对应的字母(大写)} else { // 否则余数为个位数digitChar = '0' + digit; // 将余数转换为对应的字符}result = digitChar + result; // 将当前字符添加到结果字符串的开头num /= base; // 更新num为num除以base的商}return result; // 返回转换后的P进制字符串
}int main() {cout << "请输入需要转换的数字x和进制数P:"; int x;cin >> x;int P; cin >> P; cout <<  toBase(x,P);return 0; 
}

 几个案例解释:

案例一:

  1. 用户输入: 用户输入两个值:xP。在这个例子中,x 为66,P 为4。

  2. 调用 toBase 函数: 函数 toBase 接受两个参数:要转换的十进制数 num(这里是66)和目标进制数 base(这里是4)。

  3. 循环计算

    • 第一次循环
      • 计算 66 % 4 = 2,余数为2。对应的字符是 '2'
      • 66 / 4 = 16,商为16。更新 num 为16。
    • 第二次循环
      • 计算 16 % 4 = 0,余数为0。对应的字符是 '0'.
      • 16 / 4 = 4,商为4。更新 num 为4。
    • 第三次循环
      • 计算 4 % 4 = 0,余数为0。对应的字符是 '0'
      • 4 / 4 = 1,商为1。更新 num 为1。
    • 第四次循环
      • 计算 1 % 4 = 1,余数为1。对应的字符是 '1'
      • 1 / 4 = 0,商为0,循环结束。

    由于 result 是逆序构建的,结果字符串为 '1002'

  4. 输出结果: 将 toBase 的结果输出至标准输出流。 最终结果为 '1002',即66转为4进制的表示是 '1002'

案例二: 

  1. 用户输入: 用户输入两个值:xP。在这个例子中,x 为666,P 为24。

  2. 调用 toBase 函数: 函数 toBase 接受两个参数:要转换的十进制数 num(这里是666)和目标进制数 base(这里是24)。

  3. 循环计算

    • 第一次循环
      • 计算 666 % 24 = 18,余数为18。对应的字符是 'I'
      • 666 / 24 = 27,商为27。更新 num 为27。
    • 第二次循环
      • 计算 27 % 24 = 3,余数为3。对应的字符是 '3'
      • 27 / 24 = 1,商为1。更新 num 为1。
    • 第三次循环
      • 计算 1 % 24 = 1,余数为1。对应的字符是 '1'
      • 1 / 24 = 0,商为0,循环结束。

    由于 result 是逆序构建的,结果字符串为 '1318'

  4. 输出结果: 将 toBase 的结果输出至标准输出流。 最终结果为 '1318',即666转为24进制的表示是 '1318'

案例三: 

  1. 用户输入: 用户输入两个值:xP。在这个例子中,x 为999,P 为36。

  2. 调用 toBase 函数: 函数 toBase 接受两个参数:要转换的十进制数 num(这里是999)和目标进制数 base(这里是36)。

  3. 循环计算

    • 第一次循环
      • 计算 999 % 36 = 27,余数为27。对应的字符是 'R'
      • 999 / 36 = 27,商为27。更新 num 为27。
    • 第二次循环
      • 计算 27 % 36 = 27,余数为27。对应的字符是 'R'
      • 27 / 36 = 0,商为0,循环结束。

    由于 result 是逆序构建的,结果字符串为 'RR'

  4. 输出结果: 将 toBase 的结果输出至标准输出流。 最终结果为 'RR',即999转为36进制的表示是 'RR'

任意进制之间的转换: 

#include <iostream>   
#include <vector>     
#include <string>     using namespace std;   // 将十进制数转换为P进制形式的字符串  
string toBase(int num, int base) {string result = ""; // 初始化结果字符串为空while (num > 0) { // 当num大于0时执行循环int digit = num % base; // 计算num除以base的余数char digitChar; // 定义字符变量用于表示余数对应的字符if (digit >= 10) { // 如果余数大于等于10digitChar = 'A' + digit - 10; // 将余数转换为对应的字母(大写)} else { // 否则余数为个位数digitChar = '0' + digit; // 将余数转换为对应的字符}result = digitChar + result; // 将当前字符添加到结果字符串的开头num /= base; // 更新num为num除以base的商}return result; // 返回转换后的P进制字符串
}// 将P进制数(以字符串形式给出)转换为十进制数  
int fromBase(const string& num, int base) {  int result = 0;  int power = 1;  for (int i = num.size() - 1; i >= 0; --i) {  char digitChar = num[i];  int digit = 0;  if (digitChar >= '0' && digitChar <= '9') {  digit = digitChar - '0';  } else if (digitChar >= 'A' && digitChar <= 'Z') {  digit = digitChar - 'A' + 10;  } else if (digitChar >= 'a' && digitChar <= 'z') {  digit = digitChar - 'a' + 10;  } else {  cerr << "Invalid character in input string!" << endl;  return -1; // 返回-1表示输入字符串中有无效字符  }  result += digit * power;  power *= base;  }  return result;  
}  int main() {  //仅仅在调用第二个函数 cout << "请输入需要转换的数字x(以字符串形式给出)和进制数P:";   string x;  cin >> x;  int P;   cin >> P;   // 检查进制数是否合法(应在2到36之间)  if (P < 2 || P > 36) {  cerr << "Invalid base! Base should be between 2 and 36." << endl;  return 1;  }  int decimalValue = fromBase(x, P);  if (decimalValue != -1) {  cout << "转换后的十进制数为: " << decimalValue << endl;  }  return 0;   
}

相关文章:

十进制转任意进制(以及任意进制来回转换<了解>)

十进制转任意进制&#xff1a; #include <iostream> #include <vector> #include <string> using namespace std; // 将十进制数转换为P进制形式的字符串 string toBase(int num, int base) {string result ""; // 初始化结果字符串为空wh…...

postcss-px-to-viewport 从入坑到放弃 (nuxt3搭建响应式官网解决方案 )

前沿 什么是 postcss-px-to-viewport 将px单位转换为视口单位的 (vw, vh, vmin, vmax) 的 PostCSS 插件。 为什么使用 postcss-px-to-viewport 在pc端盛行的时代 &#xff0c;如果你不想去适配更多的pc端代码&#xff0c;可以采用它。 由于nuxt3本身已带postcss&#xff0c;所…...

C语言从入门到入门

一、引言 C语言是一种通用的、过程式的计算机编程语言,支持结构化编程、词汇变量作用域和递归等功能,其设计提供了低级别的存取权限,并且要求程序员管理所有的内存细节。C语言具有高效、灵活和可移植性等特点,因此被广泛应用于系统编程、嵌入式系统开发、游戏开发等领域。 …...

Java基础教程 - 4 流程控制

更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 4 流程控制 4.1 分支结构…...

大厂Java面试题:MyBatis中有几种加载映射器(Mapper.xml)的方式?

大家好&#xff0c;我是王有志。 今天给大家带来的是一道来自京东的 MyBatis 面试题&#xff1a;MyBatis 中有几种加载映射器&#xff08;Mapper.xml&#xff09;的方式&#xff1f; 常见加载 MyBatis 映射器的方式有 5 种&#xff0c;可以根据不同的使用方式来进行具体区分&…...

Flutter笔记:Widgets Easier组件库(10)快速处理承若型对话

Flutter笔记 使用Widgets Easier组件库快速处理承若型对话 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://…...

10_Linux中的计划任务

10_Linux中的计划任务 常见计划任务 Linux系统中默认在执行的计划任务 日志文件的轮询:logrotate日志文件分析logwatch任务建立locate数据库建立manpage查询数据库RPM软件日志文件删除缓存与网络有关的分析 仅执行一次的计划任务 atd和at [rootnode4 ~]# systemctl start…...

Google Play开发者账号为什么会被封?如何解决关联账号问题?

Google Play是Google提供的一个应用商店&#xff0c;用户可以在其中下载并安装Android设备上的应用程序、电影、音乐、电子图书等。Google Play是Android平台上较大的应用市场&#xff0c;包含了数百万个应用程序和游戏。但是谷歌对于上架应用的审核越趋严格&#xff0c;开发者…...

(第12天)【leetcode题解】151、反转字符串中的单词

目录 151、反转字符串中的单词题目描述思路代码本题反思 151、反转字符串中的单词 题目描述 给你一个字符串 s &#xff0c;请你反转字符串中单词的顺序。 单词是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的单词分隔开。 返回单词顺序颠倒且单词之间用单个…...

如何处理多模态数据噪声不均衡动态?天大等最新《低质量数据的多模态融合》综述

多模态融合致力于整合来自多种模态的信息&#xff0c;目的是实现更准确的预测。在包括自动驾驶和医疗诊断等广泛的场景中&#xff0c;多模态融合已取得显著进展。然而&#xff0c;在低质量数据环境下&#xff0c;多模态融合的可靠性大部分仍未被探索。本文综述了开放多模态融合…...

Autosar NvM配置-手动配置Nvblock及使用-基于ETAS软件

文章目录 前言NvDataInterfaceNvBlockNvM配置SWC配置RTE Mapping使用生成的接口操作NVM总结前言 NVM作为存储协议栈中最顶层的模块,是必须要掌握的。目前项目基本使用MCU带的Dflash模块,使用Fee模拟eeprom。在项目前期阶段,应该充分讨论需要存储的内容,包括应用数据,诊断…...

【c++算法篇】双指针(下)

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;算法笔记仓 朋友们大家好啊&#xff0c;本篇文章我们来到算法的双指针的第二部分 目录 1.有效三角形的个数2.查找总价格为目标值的两个商品3.三数之和4.四数之和5.双指针常见场景总结 1.有效三角形…...

微图乐 多种装B截图一键制作工具(仅供娱乐交流)

软件介绍 采用exe进程交互通信。全新UI界面&#xff0c;让界面更加清爽简约。支持zfb、VX、TX、Yin行、Dai款、游戏等图片生成&#xff0c;一键超清原图复制到剪辑板&#xff0c;分享给好友。适用于提高商家信誉度&#xff0c;产品销售额度。装逼娱乐&#xff0c;用微图乐。图…...

基于Springboot的点餐平台

基于SpringbootVue的点餐平台的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页展示 菜品信息 菜品资讯 购物车 后台登录 用户管理 菜品分类管理 菜品信息管理 …...

C# 获取一个字符串中非数字部分?

方法一&#xff1a;使用正则表达式 使用正则表达式可以便捷地匹配并提取出字符串中所有非数字字符。与之前保留数字时的做法相反&#xff0c;这次我们将匹配数字并替换为空字符串&#xff0c;从而留下非数字部分。 using System; using System.Text.RegularExpressions;publi…...

今日总结2024/5/7

今日复习LIS二分优化的使用 P2782 友好城市 确定一边城市排序完后&#xff0c;另外一边满足坐标上升的最大数目即是桥的最大个数 为上升子序列模型 #include <iostream> #include <algorithm> #include <utility> #define x first #define y second cons…...

爬虫学习(3)豆瓣电影

代码 import requests import jsonif __name__ "__main__":url https://movie.douban.com/j/chart/top_list#post请求参数处理&#xff08;同get请求一致&#xff09;headers {"User-Agent": Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/53…...

GNU Radio创建FFT、IFFT C++ OOT块

文章目录 前言一、GNU Radio官方FFT弊端二、创建自定义的 C OOT 块1、创建 OOT 模块2、创建 OOT 块3、修改 C 和 CMAKE 文件4、编译及安装 OOT 块 三、测试1、grc 图2、运行结果①、时域波形对比②、频谱图对比 四、资源自取 前言 GNU Radio 自带的 FFT 模块使用起来不是很方便…...

125.两两交换链表中的节点(力扣)

题目描述 代码解决及思路 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), …...

APP精准推送广告是怎么做到的?

你有没有遇到这种情况&#xff0c;刚和家人聊起五一去哪玩&#xff0c;各种软件就刷到各地旅游景点。刚和朋友说到健身计划&#xff0c;转眼间网购平台就给你推荐各种健身用品&#xff0c;这些软件是如何知道我们的需求&#xff0c;难道我们的手机被监听了&#xff1f;从技术上…...

Perplexity突然禁用Chrome扩展权限:技术团队未公开的5项合规改造倒计时,开发者窗口仅剩72小时

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity突然禁用Chrome扩展权限&#xff1a;技术团队未公开的5项合规改造倒计时&#xff0c;开发者窗口仅剩72小时 Perplexity AI 技术团队于 2024 年 6 月 18 日凌晨通过后台策略悄然撤销了所有第三方 Ch…...

5个步骤掌握微信聊天记录永久保存:WeChatMsg完全掌控指南

5个步骤掌握微信聊天记录永久保存&#xff1a;WeChatMsg完全掌控指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/We…...

对比直接使用厂商API体验Taotoken在计费透明度上的优势

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比直接使用厂商API体验Taotoken在计费透明度上的优势 在集成大模型能力到实际业务的过程中&#xff0c;除了模型的性能和稳定性&…...

从电源拓扑到代码:STM32F103驱动移相全桥的软硬件协同设计实战

从电源拓扑到代码&#xff1a;STM32F103驱动移相全桥的软硬件协同设计实战 在中小功率开关电源和电机驱动领域&#xff0c;移相全桥拓扑因其优异的软开关特性和高效率表现&#xff0c;成为工程师们的首选方案之一。然而&#xff0c;将教科书上的拓扑原理转化为实际可用的电源产…...

基于Arduino与VS1053的宠物智能服装DIY:嵌入式系统集成实践

1. 项目概述与核心思路给宠物做一件会发光、会发声的智能服装&#xff0c;听起来像是科幻电影里的情节&#xff0c;但用今天触手可及的硬件和开源工具&#xff0c;这完全是一个可以亲手实现的周末项目。这个项目的核心&#xff0c;是将一个微小的“智能大脑”和一套声光系统&am…...

基于Adafruit CRICKIT与3D打印的水面机器人DIY全攻略

1. 项目概述&#xff1a;打造你的第一艘智能水面机器人 如果你对机器人、水上航行或者水下摄影感兴趣&#xff0c;但又觉得从零开始设计电路和结构太复杂&#xff0c;那么这个项目就是为你准备的。今天&#xff0c;我想分享一个我最近完成的、非常有趣且实用的创客项目&#x…...

智能硬件企业如何高效备战行业展会:从策略到执行的全流程指南

1. 展会参与的价值与策略思考又到了一年一度的行业盛会密集期&#xff0c;最近我们团队正在紧锣密鼓地筹备即将到来的2023慕尼黑上海电子展。对于很多技术型公司&#xff0c;尤其是像我们这样专注于智能硬件核心方案的公司来说&#xff0c;参加大型专业展会从来都不是一件“可去…...

从‘看’到‘穿透’:用Python实战解析不同SAR波段影像(以哨兵1号和林火监测为例)

从‘看’到‘穿透’&#xff1a;用Python实战解析不同SAR波段影像&#xff08;以哨兵1号和林火监测为例&#xff09; 当卫星划过天际&#xff0c;它携带的"眼睛"并非普通光学镜头&#xff0c;而是能穿透云层和黑暗的微波雷达。这种被称为合成孔径雷达&#xff08;SAR…...

从外卖配送范围到跨国航线规划:Geopy距离计算的3个实战场景与避坑经验

从外卖配送范围到跨国航线规划&#xff1a;Geopy距离计算的3个实战场景与避坑经验 在数字化浪潮席卷各行各业的今天&#xff0c;地理距离计算已成为许多商业应用的核心技术组件。无论是外卖小哥的手机App上闪烁的配送范围提示&#xff0c;还是国际物流系统中精确到米的航线规划…...

【免费下载】 解锁潜能,尽在掌握:深入探索VMware17 Unlocker工具

解锁潜能&#xff0c;尽在掌握&#xff1a;深入探索VMware17 Unlocker工具 【下载地址】VMware17Unlocker解锁工具附用法 本仓库提供了一个用于解锁VMware17的工具——VMware17 Unlocker。该工具可以帮助用户解锁VMware17中的某些限制&#xff0c;使其能够更好地使用虚拟机功能…...