//十进制转二进制
public static String dec2Bin(int a){
String result="";
if(a==0)return "0";
while(a!=1){
if(a%2==0)result+="0";
else result+="1";
a/=2;
}//辗转相除
result+="1";
String reString="";
//倒序
for(int i=result.length()-1;i>=0;i--){
reString+=result.charAt(i);
}
return reString;
}
//二进制转十进制
public static int bin2Dec(String a){
int dec=0;
for(int i=0;i<a.length();i++){
int c=(int)(a.charAt(i)-'0');
dec+=c*pow(2,a.length()-i-1);
}
return dec;
}
//十进制以下进制任意转换(a进制数src,转b进制数),其实就是以上的两个算法的综合
public static String d2d(String src,int a,int b){
int sum=0;
for(int i=0;i<src.length();i++){
int c=(int)(src.charAt(i)-'0');
sum+=c*pow(a,src.length()-i-1);
}
String result="";
if(sum==0)return "0";
while(sum!=0){
int in=sum%b;
result+=Integer.toString(in);
sum/=b;
}
String reString="";
for(int i=result.length()-1;i>=0;i--){
reString+=result.charAt(i);
}
return reString;
}
其中,求幂函数可以用快速幂:
//快速幂
public static int pow(int a,int b){
int answer=1,base=a;
while(b!=0){
if((b & 1)!=0)answer*=base;
base*=base;
b>>=1;
}
return answer;
}