java吧 关注:1,186,821贴子:12,591,480
  • 0回复贴,共1

十六进制转八进制问题

只看楼主收藏回复

我的程序一直无法同过平台的编译,我自己试了下,数据很小的时候可以输出正确的结果但是当数据一大,输出的结果就不对,我看了很久觉得算法没问题,不知哪位大神能够指点一二?求指点!!!!!!!!
/*十六进制转八进制*/
import java.util.*;
import java.math.*;
public class Main32 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="";
Scanner in=new Scanner(System.in);
Vector<Integer>v=new Vector<Integer>();
while(in.hasNext()){
int n=in.nextInt();
s=in.nextLine();
BigDecimal sum=new BigDecimal(0);
do{
s=in.nextLine();
for(int i=0;i<s.length();i++){
if(s.charAt(i)<='F'&&s.charAt(i)>='A'){
BigDecimal sum1=new BigDecimal((int)(((int)(s.charAt(i)-'A')+10)*Math.pow(16, s.length()-1-i)));
sum=sum.add(sum1);
}
else{
BigDecimal sum2=new BigDecimal((int)(((int)s.charAt(i)-48)*Math.pow(16, s.length()-1-i)));
sum=sum.add(sum2);
}}
int a;
BigDecimal d=new BigDecimal(8);
BigDecimal d1=new BigDecimal(0);
do{
BigDecimal d2=new BigDecimal(0);
d2=sum.remainder(d);
a=d2.intValue();
sum=sum.divideToIntegralValue(d);
v.add(a);
}while(!(sum.compareTo(d1)==0));
for(int i=v.size()-1;i>=0;i--){
System.out.print(v.get(i));
}
v.clear();
System.out.println();
n--;
}while(n!=0);
}
}
}


1楼2014-12-25 00:23回复