用java 写一个10进制转16进制的算法 怎么写

大神们在线求帮请分析下,用java 写一个10进制转16进制的算法 怎么写
最新回答
零落浮华

2025-03-02 00:13:28

算法比较复杂,建议直接使用系统内置的方法

int num = 1000;

String hexStr = Integer.toHexString(num);

直接看源码,可能你需要的只是简单的,需要的话我可以给你写个简单的算法,只支持正数,应该还不能太大的

public static void main(String[] args) {

int num = 5000;

String hexStr = Integer.toHexString(num);

System.out.println(hexStr);

StringBuilder builder = new StringBuilder();

int2Hex(num, builder);

System.out.println(builder.reverse());

}

static char[] hexChar = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

public static void int2Hex(int num, StringBuilder builder) {

if (num < 0) {
return;
}

if (num < 16) {
builder.append(hexChar[num]);
return;
}

int temp = num % 16;

int index = num / 16;

builder.append(hexChar[temp]);

int2Hex(index, builder);


}
眼眸熏染离情丶

2025-03-02 00:37:02

一个数A 可以写 A=a1*10^(n-1) +a2*10^(n-2)+....+an (0<=an<=9) 这个很清楚吧 ,那么a1a2...an就是这个十制数的写法,比如 123=1*10^2+2*10^1+3*10^0 ,那么A也可以写成  

A=b1*16^(n-1)+b2*16^(n-2)+....+bn (0<=bn<=F,10-15用A-F来代替) 这种形式吧,那么 b1b2...bn 就是这个十制数的16进制的写法.有了这个形式,那么求16进制数就很简单了,A%16 就是bn ,(A-A%16)%16 就是bn-1,....

java:

public class Test{
    publict static void main(String[]args){
        System.out.println(change(16));
System.out.println(change(15));
System.out.println(change(-16));
System.out.println(change(-20));
System.out.println(change(20));
    }
    public static String change(int n){
        if(n<0)
            return "-"+change(-n);
        if(n<16){
            return "0123456789ABCDEF".charAt(n)+"";
        }else{
            return change(n/16)+change(n%16);
        }
    }
}
风中混乱工会

2025-03-02 00:45:42

首先16进制里面a代表的是10.b 代表11,f代表15
16进制就是每16进1
然后利用这个 原理。得到如下代码。经测试,下边代码两次输出的结果是相同的。

public class test1 {

public static void main(String[] args) {
String str="aabbcc";
String myStr[]={"a","b","c","d","e","f"};
int result=0;
int n=1;
for(int i=str.length()-1;i>=0;i--){
String param=str.substring(i,i+1);
for(int j=0;j<myStr.length;j++){
if(param.equalsIgnoreCase(myStr[j])){
param="1"+String.valueOf(j);
}
}
result+=Integer.parseInt(param)*n;
n*=16;
}
System.out.println(result);
System.out.println(Integer.parseInt(str, 16));
}

}