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

 

posted @   牵魂  阅读(132)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示