前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中10进制与62进制互转算法

Java中10进制与62进制互转算法

作者头像
4xx.me
发布2022-06-09 18:59:20
8250
发布2022-06-09 18:59:20
举报
文章被收录于专栏:For XX - 专注于技术本身

10进制转62进制,即数字转6位字符(a-zA-Z0-9)

QQ截图20171112192624.png
QQ截图20171112192624.png

常见应用场景

  • 短网址服务
  • 邀请码
  • ...

算法实现

代码语言:javascript
复制
    private static final  char[] charSet = "qwertyuiopasdfghjklzxcvbnm0123456789QWERTYUIOPASDFGHJKLZXCVBNM".toCharArray();

    /**
     * 10进制转62进制
     * @param number
     * @return
     */
    public static String hex10To62(Long number){
        Long rest=number;
        Stack<Character> stack=new Stack<Character>();
        StringBuilder result=new StringBuilder(0);
        while(rest!=0){
            stack.add(charSet[new Long((rest-(rest/62)*62)).intValue()]);
            rest=rest/62;
        }
        for(;!stack.isEmpty();){
            result.append(stack.pop());
        }
        return result.toString();
    }

    /**
     * 62进制转10进制
     * @param sixty_str
     * @return
     */
    public static String hex62To10(String sixty_str){
        Long dst = 0L;
        for(int i=0; i<sixty_str.length(); i++)
        {
            char c = sixty_str.charAt(i);
            for(int j=0; j<charSet.length; j++)
            {
                if(c == charSet[j])
                {
                    dst = (dst * 62) + j;
                    break;
                }
            }
        }
        return dst.toString();
    }
QQ截图20171112204830.png
QQ截图20171112204830.png

charSet数组的顺序不同,可导致转换的结果不同。所以可能会和网上的算法结果不能通用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常见应用场景
  • 算法实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档