我倒是随便写了段代码,不过好像BigDecimal的累加出了点问题,原因我没有找出来代码如下: import java.math.BigDecimal; public class Test { private int change(char c) { switch(c) { case '1':return 1; case '2':return 2; case '3':return 3; case '4':return 4; case '5':return 5; case '6':return 6; case '7':return 7; case '8':return 8; case '9':return 9; case 'a':return 10; case 'b':return 11; case 'c':return 12; case 'd':return 13; case 'e':return 14; case 'f':return 15; default:return 0; } } String str="c265e4bd629300c5cba88450874b7769800d3d266518e10d"; public String run() { char[] s=str.toCharArray(); String rs=""; BigDecimal result=new BigDecimal("0"); for(int i=0;i<s.length;i++) { BigDecimal sta=new BigDecimal(change(s[i])); BigDecimal quan=new BigDecimal(16).pow(s.length-1-i); result=result.add(sta.multiply(quan)); } return rs=result.toString(); } public static void main (String[] args) { Test t=new Test(); System.out.println(t.run()); } } 答案是4766625618663571497836132322132490719026828879351160299789 看看对不对了。
public static void main(String args[]){
long nub = 0l;
nub =10*16*16*16*16+1*16*16*16+2*16*16+3*16+0;
System.out.println("------nub---"+nub);
}
测试数据时Sting s ="a123"
建议还是老老实实写循环去转吧long型好像也存储不了的哦。
有好办法露一手哈
import java.math.BigDecimal;
public class Test
{
private int change(char c)
{
switch(c)
{
case '1':return 1;
case '2':return 2;
case '3':return 3;
case '4':return 4;
case '5':return 5;
case '6':return 6;
case '7':return 7;
case '8':return 8;
case '9':return 9;
case 'a':return 10;
case 'b':return 11;
case 'c':return 12;
case 'd':return 13;
case 'e':return 14;
case 'f':return 15;
default:return 0;
}
}
String str="c265e4bd629300c5cba88450874b7769800d3d266518e10d";
public String run()
{
char[] s=str.toCharArray();
String rs="";
BigDecimal result=new BigDecimal("0");
for(int i=0;i<s.length;i++)
{
BigDecimal sta=new BigDecimal(change(s[i]));
BigDecimal quan=new BigDecimal(16).pow(s.length-1-i);
result=result.add(sta.multiply(quan));
}
return rs=result.toString();
}
public static void main (String[] args)
{
Test t=new Test();
System.out.println(t.run());
}
}
答案是4766625618663571497836132322132490719026828879351160299789 看看对不对了。