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