十进制和十六进制间的转换
原理:
十进制转换为十六进制
十六进制转换为十进制
代码:
package com.company;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
// 将10进制转换为16进制
System.out.print("请输入一个10进制数字:");
int dec = input.nextInt();
System.out.println(DecToHex(dec));
// 将16进制转换为10进制
System.out.print("请输入一个16进制数:");
String hex = input.next();
System.out.println(HexToDec(hex));
}
// 10进制转换为16进制
public static String DecToHex(int dec) {
String hex="";
while (dec!=0)
{
int temp = dec%16;
if(temp>=0 && temp<=9) hex = (char)(temp + '0') + hex;
else hex = (char) (temp - 10 + 'A') + hex;
dec/=16;
}
return hex;
}
// 将16进制转换为10进制
public static int HexToDec(String hex) {
int dec = 0;
for (int i = 0; i < hex.length(); i++) {
// 在Java中对String字符串操作时,没办法像C++中用下标表示的方法,比如hex[i],只能hex.charAt(i)
if(hex.charAt(i) >= '0' && hex.charAt(i) <= '9') dec += (hex.charAt(i) - '0') * Math.pow(16,hex.length()-i-1);
else dec += (hex.charAt(i) -'A' +10) * Math.pow(16,hex.length()-i-1);
// 我之前是这样写的:
// if(hex.charAt(i) >= '0' && hex.charAt(i) <= '9') dec += ((int)(hex.charAt(i) - '0')) * Math.pow(16,hex.length()-i-1);
// else dec += ((int)(hex.charAt(i) -'A' +10)) * Math.pow(16,hex.length()-i-1);
// 不用强制转换(不用把字符型转换为整型,应该是默认字符减字符结果是一个整型)
}
return dec;
}
}
注意:
在Java中,对String类型操作时,需要使用charAt()
。而char数组的操作和C++中的相同。
比如:
在Java中,取hex字符的下标为i的字符是:hex.charAt(i)
(String)。
而C++中可以直接对下标进行操作,hex[i]
(string)就像是这样。这点值得注意。
对于char数组操作都是hex[i]
(char)。
// char
package com.company;
public class Main{
public static void main(String[] args){
char[] ch = new char[26];
for(int i=0;i<26;i++)
{
ch[i] =(char)('A' + i);
}
System.out.println(ch[10]);
}
}
// K
// String
package com.company;
public class Main{
public static void main(String[] args){
String ch = "ABCDEFG";
System.out.println(ch.charAt(1));
}
}
// B