zoukankan      html  css  js  c++  java
  • 将10进制数字转成62进制数字(转)

    原文地址:https://blog.csdn.net/qq_30629571/article/details/81065009

    将10进制数字转成62进制数字

    先定义62进制的代表字符:

    1 static final char[] DIGITS =
    2 { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
    3 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
    4 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
    5 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D',
    6 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
    7 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
    View Code

    利用循环求余求商的原理编写方法:

     1 private static String to62RadixString(long seq) {
     2         StringBuilder sBuilder = new StringBuilder();
     3         while (true) {
     4             int remainder = (int) (seq % 62);
     5             sBuilder.append(DIGITS[remainder]);
     6             seq = seq / 62;
     7             if (seq == 0) {
     8                 break;
     9             }
    10         }
    11         return sBuilder.reverse().toString();
    12     }
    View Code

    将62进制转换成10进制,反过来做

     1 private static long radixString(String str) {
     2         long sum = 0l;
     3         int len = str.length();
     4         for (int i = 0; i < len; i++) {
     5             sum += indexDigits(str.charAt(len-i-1))*Math.pow((double)62,(double)i);
     6  
     7         }
     8         return sum;
     9     }
    10  
    11     private static int indexDigits(char ch){
    12         for (int i = 0; i < DIGITS.length; i++) {
    13             if (ch == DIGITS[i]){
    14                 return i;
    15             }
    16         }
    17         return -1;
    18     }
    View Code

    同理,转任意进制的方式都可以这么做

  • 相关阅读:
    C#线程的IsBackgroud属性动态设置
    asp.net 异步
    IBM一些Java文章
    (一)Apollo配置中心介绍
    样式表中的 element.style样式如何修改
    jquery中的append和js原生中的innerhtml的区别
    如何在datagrid中的column获取json数据
    快速排序
    冒泡排序
    二进制中有多少个1?
  • 原文地址:https://www.cnblogs.com/lovewl2/p/10522717.html
Copyright © 2011-2022 走看看