概述
1、原理
0-10、a-z、A-Z,去除不好辨识的字符,例如大写O、小写l等,共凑成58个字符数组。传入long型数据,递归对58进行取模取余,进行进制转换。
2、代码
package com.lyn.v5.polish.infrastructure.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
public class InvitationCodeUtils {
private static final Logger logger = LoggerFactory.getLogger(InvitationCodeUtils.class);
private static final char[] charArray = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz".toCharArray();
private static final int scale = 58;
private static final HashMap<String, Integer> map = new HashMap<String, Integer>() {
{
put("0", 0);
put("1", 1);
put("2", 2);
put("3", 3);
put("4", 4);
put("5", 5);
put("6", 6);
put("7", 7);
put("8", 8);
put("9", 9);
put("A", 10);
put("B", 11);
put("C", 12);
put("D", 13);
put("E", 14);
put("F", 15);
put("G", 16);
put("H", 17);
put("J", 18);
put("K", 19);
put("L", 20);
put("M", 21);
put("N", 22);
put("P", 23);
put("Q", 24);
put("R", 25);
put("S", 26);
put("T", 27);
put("U", 28);
put("V", 29);
put("W", 30);
put("X", 31);
put("Y", 32);
put("Z", 33);
put("a", 34);
put("b", 35);
put("c", 36);
put("d", 37);
put("e", 38);
put("f", 39);
put("g", 40);
put("h", 41);
put("i", 42);
put("j", 43);
put("k", 44);
put("m", 45);
put("n", 46);
put("p", 47);
put("q", 48);
put("r", 49);
put("s", 50);
put("t", 51);
put("u", 52);
put("v", 53);
put("w", 54);
put("x", 55);
put("y", 56);
put("z", 57);
}
};
public static String encodeStr(Long num) {
StringBuilder sb = new StringBuilder();
try {
while (num != 0) {
sb.append(charArray[(int) (num % scale)]);
num = num / scale;
}
return sb.toString();
} catch (Exception ex) {
logger.error("InvitationCodeUtils encodeStr 编码出错", ex);
}
return "";
}
public static String decodeStr(String str) {
long sum = 0;
try {
for (int i = str.length() - 1; i >= 0; i--) {
sum += Math.pow(scale, i) * map.get(str.charAt(i) + "");
}
return String.valueOf(sum);
} catch (Exception ex) {
logger.error("InvitationCodeUtils decodeStr 输入不符合规范");
}
return "";
}
public static void main(String[] args) {
String mobile = "13100012345";
String mobileEn = encodeStr(Long.parseLong(mobile));
logger.info("手机号={} 编码后={}", mobile, mobileEn);
String mobileDe = decodeStr(mobileEn);
logger.info("编码后={} 解码后={}", mobileEn, mobileDe);
}
}
3、执行结果
最后
以上就是高高唇彩为你收集整理的Java 58进制与十进制互转的全部内容,希望文章能够帮你解决Java 58进制与十进制互转所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复