题目
十进制转十六进制字符串输出
思路
本题把十进制整数转成十六进制字符串(小写 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