我已经找到答案了,分享一下
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());
}}
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());
}}
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));
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"));
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