十进制(10)与64进制互相转换算法

应用在

  1. 网址缩短,增加二维码清晰度
  2. 有字数限制的微博,文章分享等
  3. 数字的加解密

JAVA实现代码

import java.security.MessageDigest;
import java.util.Stack;/*** Created By 谭健 2017年6月17日 22:17:04(TEL:15197447018)** @version 2.0***          加解密算法*/
public class PECode {public static void main(String[] args) {System.out.println("64进制:" + encode(201314520));System.out.println("10进制:" + decode(encode(201314520)));}/*** 打乱改字符数组的组合顺序,可以得到不同的转换结果*/private static final char[] array = { 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g','h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '8', '5', '2', '7', '3', '6', '4', '0', '9', '1', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '+', '-' };/*** @param number*            double类型的10进制数,该数必须大于0* @return string类型的64进制数*/public static String encode(double number) {double rest = number;// 创建栈Stack<Character> stack = new Stack<Character>();StringBuilder result = new StringBuilder(0);while (rest >= 1) {// 进栈,// 也可以使用(rest - (rest / 64) * 64)作为求余算法stack.add(array[new Double(rest % 64).intValue()]);rest = rest / 64;}for (; !stack.isEmpty();) {// 出栈result.append(stack.pop());}return result.toString();}/*** 支持范围是A-Z,a-z,0-9,+,-** @param str 64进制的数字* @return 10进制的数字*/public static double decode(String str) {// 倍数int multiple = 1;double result = 0;Character c;for (int i = 0; i < str.length(); i++) {c = str.charAt(str.length() - i - 1);result += decodeChar(c) * multiple;multiple = multiple * 64;}return result;}private static int decodeChar(Character c) {for (int i = 0; i < array.length; i++) {if (c == array[i]) {return i;}}return -1;}
}

十进制(10)与64进制互相转换算法相关推荐

  1. java 10进制转64进制_十进制与64进制互相转换算法

    实现代码如下: /** * */ package com.M.controller.test; import java.util.Stack; /** * * @author online zuozu ...

  2. javascript 10进制和64进制的转换

    原文:javascript 10进制和64进制的转换 function string10to64(number) {var chars = '0123456789abcdefghigklmnopqrs ...

  3. 8421快速转换法 2、10、16进制快速转换

    8421快速转换法 2进制 快速转换 10进制 例题:二进制100101001转十进制 100101001等同2^8+2^5+2^3+2^0等同256+32+8+1=297 解析心算步骤 第一步挑出里 ...

  4. 使用链栈来对十进制数进行任意进制的转换

    使用辗转相除法,通过链栈来实现一个十进制数字对任意进制的一个转换,提前声明,这里不包括一进制和零进制的转换. #include"stdio.h" #include<stdli ...

  5. js字符串与64进制的转换

    1.封装的weapp-jwt.js文件 "use strict"; Object.defineProperty(exports, "__esModule", { ...

  6. 10进制和64进制互转

    以前写过16进制和64进制的转换函数,今天做下载页的短连接,突然想到可以吧id转换为64进制,让地址看起来更短,下面是代码,分享给大家.性能测试,1000次计算互转计算,4位64进制数(aaaa:26 ...

  7. linux系统计算器工具,Linux工具之bc计算器进制的转换

    bc是Linux下的命令行式的计算器. 题目虽然叫任意进制,但是因为bc的限制,输入进制是216范围:输出进制是2999范围.这与常见计算器的进制范围是一致的,比如windows计算器最高也只能处理1 ...

  8. js 64进制转换方法 URL参数压缩

    经常URL上面需要有不少中文,但直接放置中文容易出现乱码,所以要进行转码,但普通转码后,会发现URL太长了,不便于保存和处理.和朋友讨论以后,觉得可以使用一定的压缩算法,将转码后的中文进行处理,能够明 ...

  9. php 64进制转16进制,PHP进制转换[实现2、8、16、36、64进制至10进制相互转换]

    $mtime1= explode(" ", microtime()); $startTime= $mtime1[0] + $mtime1[1];?> 进制转换 2 8 10 ...

最新文章

  1. 在关联枚举中使用Codable
  2. SVN的使用(服务端与客户端)
  3. 蓝桥杯:算法训练之最大最小公倍数
  4. Spring MVC HttpMessageConverter对象
  5. 岗位内推 | 微软亚洲互联网工程院自然语言处理组招聘
  6. keepalived mysql双主架构图_基于keepalived Mysql双主热备配置
  7. 对PostgreSQL cmin和cmax的理解
  8. 如何制作可以在 MaxCompute 上使用的 crcmod 1
  9. [UE4] AnimationBlueprint: Node XXX uses potentially thread-unsafe call XXX 的解决办法,get 静态对象
  10. TCP传输连接建立与释放详解
  11. 仿九天音乐图片切换技术[二],兼容ie,ff
  12. Java基础知识总结(2021版)
  13. dw中html颜色的设置颜色代码,利用Dreamweaver(DW)快速输入CSS颜色代码值
  14. bootstrapValidator.js文件里的提示语:设置为中文
  15. AAAI 2021论文推荐丨图神经网络成研究热点
  16. 大众点评爬取------分析成都必吃菜
  17. 写给四十岁男人的忠告
  18. EB tresos studio 配置SPC574K MCU Driver报错解决方法
  19. jmeter前后置处理器
  20. Systemd基础篇:workingdirectory事前不创建会导致的问题

热门文章

  1. [附源码]Python计算机毕业设计Django文具商城购物系统
  2. 跳伞的时候,伞包拉不开,如何自救?在线等... ..
  3. 深圳软件测试学习:软件测试这个职业能干多久?
  4. miui10和android10哪个好用,EMUI9.1实力挑战MIUI10,谁才是你心目中最好的安卓定制系统...
  5. 请求的流只能读取1次的问题
  6. 二叉树深度优先遍历-递归实现
  7. python中凯撒密码加密_凯撒密码加密Python
  8. 往事如烟 - 夫妻股篇
  9. Unity动画播放BUG
  10. 用HTML和CSS编辑的简历模板