日期:2014-05-20  浏览次数:20610 次

关于字符串
c265e4bd629300c5cba88450874b7769800d3d266518e10d 表示的一串数字是多少?怎么算出来?

------解决方案--------------------
探讨

来个最笨的方法,不过不会出现异常哦
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);
}

------解决方案--------------------
我倒是随便写了段代码,不过好像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 看看对不对了。