进制转换是计算机内部时时刻刻都在进行活动,本篇文章也是进制转换的算法介绍,不过不同的是我想利用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. Java学习的第五十天

    1.求长方体的体积要求类中用但参数的方法去求 public class Cjava { public static void main(String[]args) { Box b1=new Box(1 ...

  2. python框架Django中的MTV架构

    MTV架构 关注公众号"轻松学编程"了解更多. ​ 通过V对M和T进行连接,用户通过T(界面)对服务器进行访问(发送请求),T把请求传给V(调度),V调用M(数据模型)获取数据,把 ...

  3. Java反射复习笔记

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

  4. 6.1 接口 - 6.3 lambda表达式

    6.1 接口 接口概念 接口是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义.设计目的是解决多继承的问题 接口中所有方法时 public 不用现实声明 java.lang.Comparab ...

  5. 三十二张图告诉你,Jenkins构建Spring Boot 有多简单~

    持续原创输出,点击上方蓝字关注我 目录 前言 如何安装Jenkins? 环境准备 开始安装Jenkins 初始化配置 访问首页 输入管理员密码 安装插件 创建管理员 实例配置 配置完成 构建Sprin ...

  6. ctf堆叠注入总结(持续更新)

    第一种 1';USE db_name;SET @sql=CONCAT('sql contents');PREPARE stmt_name FROM @sql;EXECUTE stmt_name; 第二 ...

  7. 什么是JavaScript作用域

    编程语言中,存储.访问和修改变量的值的能力将状态带给了程序.但是将变量引入程序会引起一些有意思的问题:变量存储在哪里?程序需要时如何找到它们?这些问题说明需要一套设计良好的规则来存储变量,并且之后可以 ...

  8. 仿select下拉框

    默认状态下,灰色面板出现.当点击页面按钮以及灰色面板外区域时,面板消失;点击按钮,灰色面板出现;点击灰色面板区域,面板不能消失. 主要考察:事件冒泡与取消事件冒泡. 代码: <!DOCTYPE ...

  9. 对“线上问题 不能gdb调试怎么处理??“”的思考

    Q1:线上问题的process 都为release版本!不带调试信息怎么查?(目前有时需要查线上问题, 不得不解决这个问题) 之前查问题都是编译环境编译一个带有debug信息的版本进行替换来调试,但是 ...

  10. tcp ESTABLISHED 接收数据

    tcp_rcv_established函数的工作原理是把数据包的处理分为2类:fast path和slow path,其含义显而易见.这样分类的目的当然是加快数据包的处理,因为在正常情况下,数据包是按 ...