思路

1.使用字符数组存储十进制数字
2.从个位开始,利用/16及%16,更新当前number及余数,注意处理16进制的10-15与A-F的转换。
3.因为需要反转字符串,所以建立字符串缓冲池存储。
4.注意十六进制的固定格式是 开头必加上0X。


代码

package leetcode;

import java.util.Scanner;

public class 进制转换_10转16 {
    public static void main(String[] args) {
        //十进制转为16进制

        Scanner sc = new Scanner(System.in);

        while(sc.hasNext()) {
            int number = sc.nextInt();//获取输入的数字
            char[] ch= new char[(number + "").length()];//获取数int类型字位数的方法
            int nindex = 0;//字符串数组更新的位置

            while(true) {
                int m = number/16;//减掉余数
                int k = number%16;//取余
                if(k == 10) {
                    ch[nindex] = 'A';
                }
                if(k == 11) {
                    ch[nindex] = 'B';
                }
                if(k == 12) {
                    ch[nindex] = 'C';
                }
                if(k == 13) {
                    ch[nindex] = 'D';
                }
                if(k == 14) {
                    ch[nindex] = 'E';
                }
                if(k == 15) {
                    ch[nindex] = 'F';
                }
                if((k>=0)&&(k<10)) {//如果k为0-9
                    ch[nindex] = (char)('0'+k);//技巧:将数字转为char形式存入char[]字符串数组ch
                }
                nindex++;//更新字符串数组位置(注意是从个位开始存入,结果最重要反转
                if(m == 0) break;//如果这个数已经为0,则跳出循环
                number = m;//如果m还没为0,则更新number
            }
            StringBuffer sb = new StringBuffer();//建立字符串缓冲池sb
            sb.append(ch, 0, nindex);//将ch中从索引0开始一直到index-1的字符加入sb
            //注意sb.append(char[] str,int offset,int len)方法和sb.append(String str,int start,int end)的区别
            sb.reverse();//反转字符串缓冲池

            String ans = "0x";//十六进制固定格式:开头必有0x
            ans = ans + sb.toString();
            System.out.println(ans);            
        }        
    }
}

笔记

1.将数字int转为字符形式char。

        int k = 5;
        char n = (char)('0' + k);//将数字转为字符格式
        char m = (char)('k');
        char w = 'k';
        System.out.println(n);
        System.out.println(m);
        System.out.println(w);

运行结果:

5
k
k

2.StringBuffer的append(a,b,c)方法

(1) sb.append(char[] str, int offset, int len)
将字符数组从索引offset开始的len长度的字符加入sb。

(2) sb.append(String s, int start, int end)
将字符串s从索引start开始到索引end(不包括end)加入sb。

public class StringBuffer_append方法 {
    public static void main(String[] args) {
        StringBuffer sb1 = new StringBuffer("Hard ");
        StringBuffer sb2 = new StringBuffer("Hard "); 

        char[] ch = new char[]{'W','a','x','w','o','r','k','s'};
        sb1.append(ch,3,4);
        System.out.println("第一个位置为字符数组名时,结果为:" + sb1);

        String s = "Waxworks"; 
        sb2.append(s,3,4);
        System.out.println("第一个位置为字符串时,结果为:" + sb2);

    }

}

运行结果:

第一个位置为字符数组名时,结果为:Hard work
第一个位置为字符串时,结果为:Hard w