可以把java中十进制数用代码直接转为16进制吗?

2024-11-27 21:07:01
推荐回答(2个)
回答1:

//当然可以:我分两步讲解,两种方法,一个比较简单,利用系统API,一个讲原理稍微复杂一点!
import java.util.Scanner;
public class Tohex 
{
//录入数字用!
private static Scanner sc=new Scanner(System.in);

//容器,存放转好的数字,也可以不用,也可以用数组!
private static StringBuffer sb;

public static void main(String[] args) 
{
/*
 Integer,这个类功能很强大,是Java提供的,想用可以查询一下;
 特点就是简单拿来就用,新手不建议使用,搞懂进制转换原理以后在去使用API事半功倍!
*/
System.out.println("\n\t\t==========装16进制!==========\n\n系统API(Integer)演示:\n");
init();
}
//方法1,用系统API
private static void init()
{
//十进制!
int a=125454;
//转换过程16进制!
String hex=Integer.toHexString(a);
System.out.println(a+" 十六进制= "+hex+"\n------------------------------------\n\t\t自定义测试:\n");

input();
}
//方法2:自己动手转换,了解转换原理!
private static void input()
{
while(true)
{
System.out.println("输入被转数字:\n");
int a=sc.nextInt();
System.out.println("输入想转的进制:暂时支持2,8,16进制");
int b=sc.nextInt();
ToHex(a,b);
}
}
//转换过程!
private static void ToHex(int x,int y)//a是要转数字,b是进制!
{
sb=new StringBuffer();
int a=x,b=0,c=0;
switch(y)
{
case 2:b=1;c=1;
break;
case 8:b=7;c=3;
break;
case 16:b=15;c=4;
break;
default :break;
}
while(a>0)
{
int tem=a&b;
String s= tem>9?((char)(tem-10+'A'))+"":tem+"";
sb.append(s);
a=a>>>c;
}

print(sb);//传递打印!
}
//打印!
private static void print(StringBuffer sb)
{
System.out.println("\n结果演示:"+sb.reverse()+"\n请继续输入测试--->>\n");
sb=null;
}
}

回答2:

可以通过Integer.parseInt(Strings,intradix)方法实现,radix是进制,可以是2(二进制),10(十进制),16(十六进制)等。举例:System.out.print(Integer.parseInt("F",16)););结果就是:15。