import java.util.HashMap;

public class test2 {

    // 定义45进制数字
private static final String X45 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./: ";
// 拿到45进制转换10进制的值键对
private static HashMap<Character, Integer> _45To10 = createMap45To10();
// 拿到10进制转换45进制的值键对
private static HashMap<Integer, Character> _10To45 = createMap10To45();
// 定义静态进制数
private static int BASE = 45; private static HashMap<Character, Integer> createMap45To10() {
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
for (int i = 0; i < X45.length(); i++) {
map.put(X45.charAt(i), i);
}
return map;
} private static HashMap<Integer, Character> createMap10To45() {
HashMap<Integer, Character> map = new HashMap<Integer, Character>();
for (int i = 0; i < X45.length(); i++) {
map.put(i, X45.charAt(i));
}
return map;
} /**
* 10 to 45
*
* @param iSrc
* @return
*/
public static String _10To45(int iSrc) {
String result = "";
int key;
int value;
key = iSrc / BASE;
value = iSrc - key * BASE;
if (key != 0) {
result = result + _10To45(key);
}
result = result + _10To45.get(value).toString();
return result;
} /**
* 45 to 10
*
* @param pStr 45进制字符串
* @return 十进制
*/
public static int _45To10(String pStr) {
if (pStr == "")
return 0;
// 目标十进制数初始化为0
int deciaml = 0;
// 记录次方,初始为45进制长度 -1
int power = pStr.length() - 1;
// 将45进制字符串转换成char[]
char[] keys = pStr.toCharArray();
for (int i = 0; i < pStr.length(); i++) {
// 拿到45进制对应的10进制数
int value = _45To10.get(keys[i]);
deciaml = (int) (deciaml + value * Math.pow(BASE, power));
// 执行完毕 次方自减
power--;
}
return deciaml;
} public static void main(String[] args) { int x = _45To10("AAA");
System.out.println(x);
//String binStr = Integer.toBinaryString(x);
//System.out.println(binStr);
//System.out.println(Integer.parseInt(binStr, 2)); String s = _10To45(11);
System.out.println(s); } }

输出:

20710
B

JAVA10进制数转45进制的更多相关文章

  1. ACM 求全排列(字典序、邻位对换、递增进位制数,递减进位制数)

    字典序:(联合康托展开就也可以按照中介数求) 邻位对换.递增进位制数,递减进位制数:具体的实现和算法讲解如下: 代码..C++版的实现并不好..因为是挨个向后找的,如果K很大的时候会超时,不过...思 ...

  2. MFC 编辑框输入16进制字符串转换为16进制数或者10进制数据计算

    1.编辑框添加变量,并选择变量类型为CString. 2.  使用“_tcstoul”函数将Cstring 类型转换为16进制/10进制数进行计算.

  3. Java中8进制数和16进制数的表示方法

    由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题.  但,二进制数太长了.比如int   类型占用4个字节,32位.比如100,用int类型的二进制数表达将 ...

  4. 1813. M进制数问题

    1813. M进制数问题 Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description 试用 C++的类来表示一般进制数. 给定 2 ...

  5. C#版 - Leetcode 504. 七进制数 - 题解

    C#版 - Leetcode 504. 七进制数 - 题解 Leetcode 504. Base 7 在线提交: https://leetcode.com/problems/base-7/ 题目描述 ...

  6. 一个小公式帮你轻松将IP地址从10进制转到2进制

    网络工程师经常会遇到的一个职业问题:如何分配IP,通过子网如何捕捉某一网段或某台机器?他们甚至能够进行精准的分析和复杂的开发......凡此种种,其实与一些他们头脑中根深蒂固的常识性理论存有某种内在的 ...

  7. C/C++ 各种进制的表示方法/ 进制前缀

    C/C++ 各种进制的表示方法/ 进制前缀 来源 https://blog.csdn.net/qq_38282836/article/details/81784112 在C/C++ 中天然的支持除10 ...

  8. C++中,将单精度浮点数转换成2进制数

    在C++里,实数(float)是用四个字节即三十二位二进制位来存储的.其中有1位符号位,8位指数位和23位有效数字位.实际上有效数字位是24位,因为第一位有效数字总是"1",不必存 ...

  9. [转]as3 算法实例【输出1 到最大的N 位数 题目:输入数字n,按顺序输出从1 最大的n 位10 进制数。比如输入3,则输出1、2、3 一直到最大的3 位数即999。】

    思路:如果我们在数字前面补0的话,就会发现n位所有10进制数其实就是n个从0到9的全排列.也就是说,我们把数字的每一位都从0到9排列一遍,就得到了所有的10进制数. /** *ch 存放数字 *n n ...

  10. CF459C Pashmak and Buses (构造d位k进制数

    C - Pashmak and Buses Codeforces Round #261 (Div. 2) C. Pashmak and Buses time limit per test 1 seco ...

随机推荐

  1. NVME(学习笔记二)—CMB

    什么是CMB 在NVMe Express 1.2 Spec中开始支持一个特性,那就是CMB(Controller Memory Buffer),是指SSD控制器内部的读写存储缓冲区,与HMB(Host ...

  2. 【Unity3D】分离路面导航

    1 前言 ​ 导航系统中介绍了导航的基本用法,但是不能解决分离路面导航问题.如下图,胶囊体需要导航到立方体位置,但是路面不连续,烘焙(Bake)导航网格后,断开处也没有导航网格,因此,胶囊体导航到分离 ...

  3. Spring Boot图书管理系统项目实战-9.归还图书

    导航: pre:  8.续借图书 next:10.借还统计 只挑重点的讲,具体的请看项目源码. 1.项目源码 需要源码的朋友,请捐赠任意金额后留下邮箱发送:) 2.页面设计 2.1 bookRetur ...

  4. Innodb之事务

    目录 一.事务基本概念 事务的特性:ACID 事务类型 1.扁平事务 2.带保存点的扁平事务 3.链式事务 4.嵌套事务 5.分布式事务 二.事务的实现概述 三.redo log 1)组成 2)red ...

  5. win32 - Shell菜单项的创建

    #include <windows.h> #include <shobjidl_core.h> #include <windowsx.h> #include < ...

  6. SpringBoot事务注解@Transactional 事物回滚、手动回滚事物

    处理springboot 下提交事务异常,数据库没有回滚的问题. spring的文档中说道,spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚,而对检查型异常则不进行回滚操作. 什么 ...

  7. Centos下配置python环境

    https://blog.csdn.net/longzhoufeng/article/details/109879818

  8. iOS上拉边界下拉白色空白问题解决概述

    表现 手指按住屏幕下拉,屏幕顶部会多出一块白色区域.手指按住屏幕上拉,底部多出一块白色区域. 产生原因 在 iOS 中,手指按住屏幕上下拖动,会触发 touchmove 事件.这个事件触发的对象是整个 ...

  9. docker-compose 安装gitlab

    准备docker-compose.yml version: '3.6' services: web: image: 'registry.gitlab.cn/omnibus/gitlab-jh:16.7 ...

  10. 【Azure 存储服务】Azure Blob上传大文件(600MB)出现内存溢出情况(Java SDK)

    问题描述 Java 云端开发,调用 blob 上传会产生内存溢出,Java上调用的方式如下: InputStream inputStream = new BufferedInputStream(new ...