我已经找到答案了,分享一下
package com.test;public class ToHexTest { private final static char BaseTable[] = { 'A', 'B', 'C', 'D', 'E', 'F',
'G', 'H', // 0
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', // 1
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', // 2
'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', // 3
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', // 4
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', // 5
'w', 'x', 'y', 'z', '0', '1', '2', '3', // 6
'4', '5', '6', '7', '8', '9', '+', '/' // 7
}; public static void main(String arg[]) {
long num = 13000000000l;
StringBuilder b = new StringBuilder();
while (num >= 1) {
b.append(BaseTable[(int) (num % 64)]);
num >>= 6;
}
System.out.println(b.toString());
}}

解决方案 »

  1.   

    如果您担心以后在自学java时遇到困难建议你加java学习群309872812.群内有一个月的在线java试听课,不受地点的限制,上课时间为晚上8点后,也不耽误您白天的生活。如果您有兴趣来听听建议您加进这个群!祝您元旦快乐,在新的一年里事业有成!
      

  2.   

    就是base64嘛把 手机号码当作数字   然后对这个长整数做base64
      

  3.   

    this is not the typical base64 encoding, instead, it's a numerical system with a base of 64...in order to convert it back to 10 base:
    int len=b.length();
    String base=new String(BaseTable);
    for(int i=0;i<len;++i)num+=((long)(1<<(i*6)))*base.indexOf(b.charAt(i));
      

  4.   

    用进制的话求出X就可以了:X^6-1 >= 10^11-1
      

  5.   

    private static String translate(String num){

    char[] TRANSLATOR={'0','1','2','3','4','5','6','7','8','9',
    'a','b','c','d','e','f','g','h','i','j',
    'k','l','m','n','o','p','q','r','s','t',
    'u','v','w','x','y','z','A','B','C','D',
    'E','F','G','H','I','J','K','L','M','N',
    'O','P','Q','R','S','T','U','V','W','X',
    'Y','Z','~','`','!','@','#','$','%','^',
    '&','*','(',')','_','-','+','=','|','{',
    '}','[',']',';',':','"','<',',','>','.',
    '?','/', 16, 17,18,19,20,21,22}; 
    String result ="";
    for(int i = 0; i < 5; i++ ){
    String spinet = num.substring(i, i+2);
    result += TRANSLATOR[Integer.parseInt(spinet)]; 
    }

    result += num.substring(10);

    return result;

    }
    //test:
    System.out.println(translate("13262767738"));
      

  6.   

    转码过程例子:
    3*8=4*6
    内存1个字符占8位
    转前: s 1 3
    先转成ascii:对应 115 49 51
    2进制: 01110011 00110001 00110011
    6个一组(4组) 011100110011000100110011
    然后才有后面的 011100 110011 000100 110011
    然后计算机是8位8位的存数 6不够,自动就补两个高位0了
    所有有了 高位补0
    科学计算器输入 00011100 00110011 00000100 00110011
    得到 28 51 4 51
    查对下照表 c z E z
      

  7.   

    这个是一个特别简单的问题,所有的11位的数字组合,你自己定义一个双射到另外一个集合就行了min x^6-10^11>0 求解可得到x最小值值70,即影射后每一位至少要能够表示70个元素即可