62进制-算法
62进制-算法
将10进制的long类型转化为有a-z0-9A-Z的62进制,long类型转为String类型。
package com.lhb.bytedance; import java.util.Deque; import java.util.LinkedList; /** * @author lhb * @date 2022/3/12 */ public class Change62 { private static char[] arr = {'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','0','1','2','3','4','5','6','7','8','9','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'}; public static String _10_to_62(long num) { StringBuilder sb = new StringBuilder(0); Deque<Character> stack = new LinkedList<>(); long rest = num; while (rest != 0) { stack.offerLast(arr[new Long((rest - ((rest/62) * 62))).intValue()]); rest /= 62; } while (!stack.isEmpty()) { sb.append(stack.pollLast()); } return sb.toString(); } private static long _62_to_10(String ch) { long ret = 0; long mutile = 1; Character c; for (int i = 0; i < ch.length(); i++) { c = ch.charAt(ch.length() - i - 1); ret += _num_62(c) * mutile; mutile *= 62; } return ret; } private static int _num_62(Character c) { for (int i = 0; i < arr.length; i++) { if (arr[i] == c) { return i; } } return -1; } public static void main(String[] args) { long num1 = 1857195719; String s = _10_to_62(num1); System.out.println(s); long l = _62_to_10(s); System.out.println(l); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步