概述
一、概述
java进行进制转换,学习到的一个转换方法;
0b开头默认是二进制
0开头默认是八进制
整数默认是10进制
0x开头默认是16进制
1. x进制转10进制
方法为 每一位的 数值 * x的(总长度-1-i次方) 的和:
如 二进制的 10101 转10进制,则结果为 1*2的4次方 + 0 + 1*2的2次方 + 0 + 1*2的0次方 = 21
如 8进制的 72 转10进制,则结果为 7*8的1次方+2*8的0次方 = 58
2. 10进制转x进制
方法为 直接用数值除以 x 得到余数追加到字符串,直到最后除数为0为止,然后字符串倒叙,则是对应的进制的结果
如1 0转二进制 则 10/2 商 5 余 0
5/2 商 2 余 1
2/2 商 1 余 0
1/2 商 0 余 1
除数为0,结束;结果为1010
如10 转8进制 则 10/8 商 1 余 2
2/8 商 0 余 1
除数为0,结束;结果为12
2. x进制转y进制
方法为 先将x进制转换为10进制,再将转换得到的10进制转换为y进制
如 二进制的1010 转 8进制;先转为10进制=10,然后再转为 8进制=12
3. 代码
//进制转换
public static void main(String[] args){
System.out.println(xToYScale("12", 10, 2));
System.out.println(xToYScale("12", 16, 2));
System.out.println(xToYScale("1010", 2, 10));
System.out.println(xToYScale("144", 8, 16));
}
private static String xToYScale(String str, int oldScale, int toScale){
StringBuilder result = new StringBuilder();
if(toScale == 10){
int num = 0;
for(int i = 0; i < str.length(); i++){
num = num + Integer.parseInt(String.valueOf(str.charAt(i))) * (int)Math.pow(oldScale, str.length() - 1 - i);
}
result.append(num);
}else if(oldScale == 10){
int num = Integer.parseInt(str);
while (num != 0){
result.insert(0, num % toScale);
num = num / toScale;
}
}else{
int num = 0;
for(int i = 0; i < str.length(); i++){
num = num + Integer.parseInt(String.valueOf(str.charAt(i))) * (int)Math.pow(oldScale, str.length() - 1 - i);
}
while (num != 0){
result.insert(0, num % toScale);
num = num / toScale;
}
}
return result.toString();
}
最后
以上就是独特长颈鹿为你收集整理的java 实现各种进制之间相互转换一、概述的全部内容,希望文章能够帮你解决java 实现各种进制之间相互转换一、概述所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复