上一篇                     
               
			  Java如何输出十六进制?
- 后端开发
- 2025-06-03
- 3808
 在Java中,可以使用
 
 
Integer.toHexString()将整数转换为十六进制字符串输出。,“
 java,System.out.println(Integer.toHexString(255)); // 输出 "ff",`
 ,或使用String.format
 格式化输出:,`
 java,System.out.printf("%x%n", 255); // 小写输出 "ff",System.out.printf("%X%n", 255); // 大写输出 "FF",“
基础方法:Integer.toHexString()
最常用的方式是使用Integer和Long类的toHexString()方法:
int decimal = 255; String hex = Integer.toHexString(decimal); // 输出: "ff" System.out.println(hex); long bigNum = 4294967295L; String longHex = Long.toHexString(bigNum); // 输出: "ffffffff" System.out.println(longHex);
特点:
- 自动小写输出
- 省略前导零(如15输出f而非0f)
- 支持负数(如-10输出fffffff6)
️ 补零技巧:
若需固定长度(如8位十六进制),配合String.format()补零:
String paddedHex = String.format("%08x", 255); // 输出: "000000ff"
格式化输出:String.format()
通过格式化字符串控制输出样式:
int num = 48879;
System.out.println(String.format("0x%x", num));    // 小写: 0xbeef
System.out.println(String.format("0X%X", num));    // 大写: 0XBEEF
System.out.println(String.format("%#06x", 15));    // 带前导0和0x: 0x000f 
格式说明符:
- %x:小写十六进制
- %X:大写十六进制
- %#x:添加- 0x前缀
- %08x:8位宽度,不足补零
处理字节数组
字节数组转十六进制字符串(常见于加密/网络通信):

byte[] bytes = {10, -20, 127, 0};
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
    sb.append(String.format("%02x", b & 0xFF));  // 按两位补零
}
System.out.println(sb);  // 输出: "0aec7f00" 
关键点:
- b & 0xFF:将字节转为无符号整数(避免负值错误)
- %02x:强制两位显示(A~F小写)
大整数处理:BigInteger
超大整数(超过Long范围)的转换:
import java.math.BigInteger;
BigInteger hugeNum = new BigInteger("123456789012345678901234567890");
String hugeHex = hugeNum.toString(16);  // 基数为16
System.out.println(hugeHex);  // 输出: "18ee90ff6c373e0ee4e3f0ad2" 
自定义转换(教学目的)
手动实现转换逻辑(理解原理):

int number = 65535;
char[] hexChars = "0123456789abcdef".toCharArray();
StringBuilder result = new StringBuilder();
while (number > 0) {
    int index = number % 16;     // 取余数作为索引
    result.insert(0, hexChars[index]); // 插入到结果前部
    number /= 16;                // 除16继续下一位
}
System.out.println(result.length()>0 ? result : "0");  // 输出: "ffff" 
最佳实践建议
- 常规整数 → 优先用Integer.toHexString()或String.format()
- 字节数组 → 循环 + String.format("%02x", b & 0xFF)
- 超大整数 → BigInteger.toString(16)
- 补零/前缀 → 用String.format()精确控制格式
- 性能敏感场景 → 避免频繁拼接字符串,用StringBuilder
注意事项
- 大小写敏感:toHexString()输出小写,String.format("%X")输出大写
- 负数处理:Java使用补码表示负数,直接转换可能产生较长结果(如-1→ffffffff)
- 前导零问题:内置方法省略前导零,需格式化补齐
引用说明:本文内容基于Oracle官方文档 Java Primitive Data Types 和 Formatter 类规范,代码示例遵循MIT开源协议,可自由使用。
 
 
 
			 
			 
			 
			 
			 
			 
			 
			