题目

十进制转十六进制字符串输出

思路

本题把十进制整数转成十六进制字符串(小写 a~f)。 反复取最低四位:digit = n % 16,再 n /= 16,直到 n 为 0。余数 10~15 用字母 a~f 表示,先收集各位再逆序输出才是高位在前。

解题分析

除 16 取余映射 0-9a-f,逆序输出。与二进制转换同一框架,基数换成 16。

完整程序

import java.io.*;

public class Main {
    static char hexDigit(long v) {
        return (char)(v < 10 ? '0' + v : 'a' + v - 10);
    }
    public static void main(String[] args) {
        long n = 255;
        if (n == 0) {
            System.out.println(0);
            return;
        }
        StringBuilder sb = new StringBuilder();
        while (n > 0) {
            sb.append(hexDigit(n & 0xF));
            n >>>= 4;
        }
        System.out.println(sb.reverse().toString());
    }
}

运行示例

输出:

ff