上一篇
Java如何输出十六进制?
- 后端开发
- 2025-06-03
- 2071
在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开源协议,可自由使用。