public class ProviderStarter {
public static void main(String[] args) {
try {
int num = BaseNToBase10("133",4);//31
System.out.println("133-》4进制转10进制:"+num);
int num8 = BaseNToBase10("44",8);
System.out.println("44-》8进制转10进制:"+num8);//36
String num100 = Base10ToBaseN(10000,16);
System.out.println("10000-》10进制转16进制:"+num100);//2710
String num36 = Base10ToBaseN(100,36);
System.out.println("100-》10进制转36进制:"+num36);//2s
String num27 = Base10ToBaseN(100,27);
System.out.println("100-》10进制转27进制:"+num27);//3j
} catch (Exception e) {
e.printStackTrace();
}
}
/n进制转十进制 通用方法
static int BaseNToBase10(String pinStr,int ibase){
int number=0;
String [] HighLetter = {"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"};
Map<String,Integer> map = new HashMap<>();
for(int i = 0;i <= 9;i++){
map.put(i+"",i);
}
for(int j= 10;j<HighLetter.length+10;j++){
map.put(HighLetter[j-10],j);
}
String[]str = new String[pinStr.length()];
for(int i = 0; i < str.length; i++){
str[i] = pinStr.substring(i,i+1);
}
for(int i = 0; i < str.length; i++){
number += map.get(str[i])*Math.pow(ibase,str.length-1-i);
}
return number;
}
//十进制转N进制 通用方法
static String Base10ToBaseN(int pinStr,int ibase){
String result = "";
String [] HighLetter = {"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"};
Map<Integer,String> map = new HashMap<>();
for(int i = 0;i <= 9;i++){
map.put(i,i+"");
}
for(int j= 10;j<HighLetter.length+10;j++){
map.put(j,HighLetter[j-10]);
}
//暂存余数的变量
int yu = 0;
//被除数小于16时跳出
while (pinStr >= ibase) {
//取余数
yu = pinStr % ibase;
//取商,用于继续求余
pinStr = pinStr / ibase;
if (yu > 9) {
result = result + map.get(yu);
} else {
result = result + yu;
}
}
result = result + pinStr;
return reverse(result);
}
//字符反转
static String reverse(String pinStr) {
char [] arr = pinStr.toCharArray();
//定义左指针
int left = 0 ;
//定义右指针
int right = pinStr.length() -1;
//右指针标小于左指针时停止
while (left < right) {
char temp = arr[right];
arr[right] = arr[left];
arr[left] = temp;
left ++;
right --;
}
//将字符数组重新转为字符串
return new String(arr);
}
}
编程题1--进制转换通用方法
最新推荐文章于 2022-11-14 15:51:25 发布