java中进制转换
1.十进制转所有
解析:例如:十转十六
先输入一个整型数字,判断其是否为0,若为0,则其16进制同样为0; 若number不为0,则对16取余,并转换成16进制相应的字符;number=number/16,重复过程2、3,用字符数组s依次保存每一位; 输出的时候逆序输出即可
package com.test;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
// 10进制转所有
Scanner sc = new Scanner(System.in);
System.out.println("请输入10进制数:");
int number = sc.nextInt();
//目标进制
int aaseSystem=16;
// 10转所有
aaseSystem(number, aaseSystem); // 进制数
}
// 10进制转所有
public static void aaseSystem(int number, int aaseSystem) {
// 进制数aaseSystem
int i = 0;
char[] S = new char[100];
if (number == 0) {
System.out.print(0);
} else {
while (number != 0) {
int t = number % aaseSystem;
// 存余数
if (t >= 0 && t < (aaseSystem > 10 ? 10 : aaseSystem)) {
S[i] = (char) (t + '0');
i++;
} else {
S[i] = (char) (t - 10 + 'A');
i++;
}
number = number / aaseSystem;
}
for (int j = i - 1; j >= 0; j--) {
System.out.print(S[j]);
}
}
}
}
输出:
2.其他进制转十(加权求和)
解析: 例如:以十六进制为例
如果原进制数是十进制一下,例如2进制:0101=0* 2^3+1* 2^2+0 2^1+1 * 2^0,相当于每一个数乘以当前进制的位权次方的和,最终结果就是10进制数。
如果原进制数是10进制以上,则用ascII,例如字母A:a-‘A’+10)*Math.pow(16,位权);相当于10 *16^位权
**注意:**要注意将用户输入的小写转换成大写:
String string=scanner.next();
string=string.toUpperCase();
统一用大写来计算,也可以写两个判断条件,都可。
package com.test;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个数:");
String string=scanner.next();
string=string.toUpperCase();
long sum=0;
int slen=string.length();
char a;
for(int i=0;i<slen;i++) {
a=string.charAt(i);
if (a>='0'&&a<='9') {
sum+=(a-'0')*Math.pow(16,slen-i-1);
}else if (a>='A'&&a<='F') {
sum+=(a-'A'+10)*Math.pow(16,slen-i-1);
}
}
System.out.println("你的十进制数为:"+sum);
}
}
结果:
更多推荐
java中个各进制中的转换,十进制转十六进制,十六进制转十进制等
发布评论