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); } }

浙公网安备 33010602011771号