进制转换是计算机内部时时刻刻都在进行活动,本篇文章也是进制转换的算法介绍,不过不同的是我想利用ascll编码实现2到61之间任意进制的相互转换,更大进制的表示方法只不过是十六进制表示方法的延伸:用字母A到Z表示整数10到35,字母a到z表示整数36到61。这样就可以表示2到61之间的任意进制啦,为方便理解ascll表放在代码后面,可以自行查看。

下面直接给上代码:

 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++实现任意进制的相互转换的更多相关文章

  1. Python版任意进制转换

    def decimalToAny(num,n): baseStr = {10:"a",11:"b",12:"c",13:"d&qu ...

  2. poj1220 (高精度任意进制转换)

    http://poj.org/problem?id=1220 高精度任意进制转换 代码是从discuss里找到的,据说是maigo神牛写的. 超精简!! 我自己第一写的时候,还把n进制先转成10进制, ...

  3. 2~62位任意进制转换(c++)

    进制转换的符号表为[0-9a-zA-Z],共61个字符,最大可表示62进制. 思路是原进制先转换为10进制,再转换到目标进制. 疑问: 对于负数,有小伙伴说可以直接将符号丢弃,按照整数进行进位转换,最 ...

  4. 【C/C++】任意进制转换

    进制转换:R进制->10进制:10进制->R进制. #include<bits/stdc++.h> using namespace std; /*函数:r进制转换成10进制*/ ...

  5. C#十进制与任意进制的转换

    /// <summary> /// 将十进制转换为指定的进制 /// </summary> /// <param name="Val">十进制值 ...

  6. itoa()、atoi()、任意进制转换

    头文件:<stdlib.h> itoa --功能:将任意类型的数字转换为字符串.在<stdlib.h>中与之有相反功能的函数是atoi. atoi----功 能: 将字符串转换 ...

  7. python任意进制转换

    python任意进制转换 import string def module_n_converter(q, s, base=None): """ 将自然数按照给定的字符串转 ...

  8. js模拟栈---进制转化。十进制转任意进制进制,任意进制转十进制

    var Stack = (function(){ var items = new WeakMap(); //先入后出,后入先出 class Stack{ constructor(){ items.se ...

  9. python的十进制与任意进制的转换

    将任意进制转换成十进制 ", 8)) # 表示把8进制的54转换成十进制数并输出结果. # 8可以是2.8,10,16等进制数 将十进制转换成任意进制 def f(n,x): #n为待转换的 ...

随机推荐

  1. pandas对列求和

    了解更多,请关注公众号"轻松学编程" 一行代码实现对列求和 使用pandas把列表中的字典元素转成二维数组,然后使用pandas函数实现对每一列求和. 代码: import pan ...

  2. Java反射复习笔记

    目录 反射 获取反射的三种方式: Class对象的功能 获取 成员变量/成员变量们 获取 成员方法/成员方法们 获取构造方法们 获取全类名 Field:成员变量 Method:成员方法 Constru ...

  3. WSL Ubuntu 18.04 LTS + VS Code

    WSL Ubuntu 18.04 LTS + VS Code ​ WSL(Windows Subsystem for Linux)使得Windows用户能够在Windows系统上使用原生的Linux环 ...

  4. C# 集合类(四)

    C# 集合类自己经常用到: 数组(Array).动态数组(ArrayList).列表(List).哈希表(Hashtable).字典(Dictionary),对于经常使用的这些数据结构,做一个总结,便 ...

  5. MSSQL 指定分隔符号 生成数据集

    DECLARE @xml VARCHAR(MAX)='磨毛:1 缩率:2 干磨:3 湿摩:4 水洗牢度:5 手感:6 防水:7 PH:8 日晒:9' SET @xml= '<root>'+ ...

  6. 第一章epoll

    IO多路复用之epoll总结 1.基本知识 epoll是在2.6内核中提出的,是之前的select和poll的增强版本.相对于select和poll来说,epoll更加灵活,没有描述符限制.epoll ...

  7. 解决calamari无法获取节点信息的bug

    前言 一直在做calamari的相关的一些打包和安装的工作,都是业余弄的东西,所以并没有仔细的进行功能点的验证测试,正好ceph社区群里面有人问了个问题 calamari上是不是能看到ceph的ver ...

  8. CentOS 7 静态IP配置

    CentOS 7 网络配置还有一个有趣的现象,我们都习惯使用 ifconfig 命令查看自己的网络信息和IP地址,但是在 CentOS 7 是无法执行的,如下图所示: 原因是 CentOS 7 使用 ...

  9. 使用进程池模拟多进程爬取url获取数据,使用进程绑定的回调函数去处理数据

    1 # 使用requests请求网页,爬取网页的内容 2 3 # 模拟使用进程池模拟多进程爬取网页获取数据,使用进程绑定的回调函数去处理数据 4 5 import requests 6 from mu ...

  10. linux qt 5.12.6 编译mysql驱动

    环境:ubuntu 18.4 x64.qt 5.12.6 问题:安装后是没有mysql的驱动的 解决过程: 各种搜索,先后安装了mysql mysql-client,mysql-server,和各种l ...