C++实现任意进制的相互转换
下面直接给上代码:
1 #include<iostream>
2 #include<cstring>
3 using namespace std;
4 void decToOther(int tmp, int b);
5 void otherToDec(int a, char str[], int b);
6 const int MAXSIZE = 10000;
7 int a, b;
8 char str[MAXSIZE];
9 int main()
10 {
11 while (cin >> a >> str >> b) //a、s、b分别为目前的进制、待转换的内容、目标进制
12 otherToDec(a, str, b); //统一先转换为10进制
13 return 0;
14 }
15
16 void otherToDec(int a, char str[], int b)
17 {//任意进制转换为十进制
18 int tmp = 0; //tmp保存十进制的值
19 int c = 1; //初始化权值为1
20 for (int i = strlen(str) - 1; i >= 0; i--)
21 {
22 int x; //存放当前位的数字
23 if (str[i] >= 'A' && str[i] <= 'Z') //字母A~Z表示整数10~35
24 x = str[i] - 'A' + 10;
25 else if (str[i] >= 'a' && str[i] <= 'z') //字母a~z表示整数36~61
26 x = str[i] - 'a' + 36;
27 else
28 x = str[i] - '0';
29 tmp = tmp + x * c; //累加将各个位上的值
30 c = c * a; //更新权值
31 }
32 decToOther(tmp, b); //由十进制转换为目标进制
33 }
34
35 void decToOther(int tmp, int b)
36 {//十进制转换为任意进制
37 int i = 0;
38 int s[MAXSIZE] = { 0 };
39 while (tmp != 0) //十进制转换为目标进制算法,结果放到数组s中
40 {
41 s[i] = tmp % b;
42 tmp= tmp / b;
43 i++;
44 }
45 cout << a << "进制数" << str << "的" << b << "进制表示为:";
46 for (; i > 0; i--) //利用ascll编码实现字母表示两位整数,并倒序输出转换结果
47 {
48 if (s[i - 1] > 9 && s[i - 1] <= 35)
49 cout << (char)(s[i - 1] + 55); //当s[i-1]为整数10时(char)(10+55)='A',输出'A'
50 else if (s[i - 1] > 35 && s[i - 1] <= 61)
51 cout << (char)(s[i - 1] + 61); //当s[i-1]为整数36时(char)(36+61)='a',输出'a'
52 else
53 cout << s[i - 1]; //个位数输出本身
54 }
55 cout << '\n';
56 }
示例:

附:ascll表

C++实现任意进制的相互转换的更多相关文章
- Python版任意进制转换
def decimalToAny(num,n): baseStr = {10:"a",11:"b",12:"c",13:"d&qu ...
- poj1220 (高精度任意进制转换)
http://poj.org/problem?id=1220 高精度任意进制转换 代码是从discuss里找到的,据说是maigo神牛写的. 超精简!! 我自己第一写的时候,还把n进制先转成10进制, ...
- 2~62位任意进制转换(c++)
进制转换的符号表为[0-9a-zA-Z],共61个字符,最大可表示62进制. 思路是原进制先转换为10进制,再转换到目标进制. 疑问: 对于负数,有小伙伴说可以直接将符号丢弃,按照整数进行进位转换,最 ...
- 【C/C++】任意进制转换
进制转换:R进制->10进制:10进制->R进制. #include<bits/stdc++.h> using namespace std; /*函数:r进制转换成10进制*/ ...
- C#十进制与任意进制的转换
/// <summary> /// 将十进制转换为指定的进制 /// </summary> /// <param name="Val">十进制值 ...
- itoa()、atoi()、任意进制转换
头文件:<stdlib.h> itoa --功能:将任意类型的数字转换为字符串.在<stdlib.h>中与之有相反功能的函数是atoi. atoi----功 能: 将字符串转换 ...
- python任意进制转换
python任意进制转换 import string def module_n_converter(q, s, base=None): """ 将自然数按照给定的字符串转 ...
- js模拟栈---进制转化。十进制转任意进制进制,任意进制转十进制
var Stack = (function(){ var items = new WeakMap(); //先入后出,后入先出 class Stack{ constructor(){ items.se ...
- python的十进制与任意进制的转换
将任意进制转换成十进制 ", 8)) # 表示把8进制的54转换成十进制数并输出结果. # 8可以是2.8,10,16等进制数 将十进制转换成任意进制 def f(n,x): #n为待转换的 ...
随机推荐
- Redis常用命令(6)——SortedSet
ZADD 格式:ZADD key score member [[score member] [score member] ...] 作用:向有序集合key中插入一个或多个元素.如果元素已经存在,更新s ...
- xshell连接windows10子系统ubuntu
修改端口 cd /etc/ssh#备份sudo cp sshd_config sshd_config.baksudo vim sshd_config修改sshd_config Port 2233 #修 ...
- angularJS 小记
刚刚接触angularJS,网上学习了一遍菜鸟教程(http://www.runoob.com/angularjs/angularjs-tutorial.html),做了些基础知识的笔记. Angul ...
- python爬虫07BeautifulSoup
有一个高效的网页解析库 它的名字叫做 BeautifulSoup 它 是一个可以从 HTML 或 XML 文件中提取数据的 Python 库 首先我们要安装一下这个库 pip install be ...
- Java实现酒店客房管理系统
这篇文章主要为大家详细介绍了Java实现酒店客房管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了Java实现酒店客房管理系统的具体代码,供大家参考,具体内容如下 Log ...
- !!vue-style-loader!css-loader?
摘自:https://blog.csdn.net/qq_27721169/article/details/88666340 问题描述*!!vue-style-loader!css-loader?{&q ...
- 01MySQL数据库介绍
一.数据库基本介绍 目标:了解数据库的功能和常见数据库分类.数据库产品 数据库基本知识 数据库分类 SQL简介 MySQL访问 1.数据库基本知识 目标:了解数据库的概念和数据库的作用 概念 数据库: ...
- mybatis拦截器 修改mybatis返回结果集中的字段的值
项目中使用了shardingJDBC,业务库做了分库,公共库没在一起,所以导致做码值转换的时候,需要在实现类里面做转码,重复的代码量大,故考虑用mybatis拦截器,将码值转换后再做返回给实现类. ...
- 日志切分神器--logrotate
Blog:博客园 个人 概述 还在自己写定时切分日志的脚本?试试系统自带的logrotate工具吧! logrotate是一个日志文件管理工具.用于分割日志文件,删除旧的日志文件,并创建新的日志文件, ...
- 14flask 渲染富文本编辑器
转载一个flask 渲染富文本编辑器: https://blog.csdn.net/qq_32198277/article/details/53355249 这里会产生一个问题: 通过富文本编辑器的数 ...