当前位置:首页 > 后端开发 > 正文

Java如何输出十六进制?

在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);

特点

Java如何输出十六进制? 第1张

  • 自动小写输出
  • 省略前导零(如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

格式说明符

Java如何输出十六进制? 第2张

  • %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"

关键点

Java如何输出十六进制? 第3张

  • 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"


最佳实践建议

  1. 常规整数 → 优先用Integer.toHexString()或String.format()
  2. 字节数组 → 循环 + String.format("%02x", b & 0xFF)
  3. 超大整数 → BigInteger.toString(16)
  4. 补零/前缀 → 用String.format()精确控制格式
  5. 性能敏感场景 → 避免频繁拼接字符串,用StringBuilder


注意事项

  • 大小写敏感:toHexString()输出小写,String.format("%X")输出大写
  • 负数处理:Java使用补码表示负数,直接转换可能产生较长结果(如-1→ffffffff)
  • 前导零问题:内置方法省略前导零,需格式化补齐


引用说明:本文内容基于Oracle官方文档 Java Primitive Data TypesFormatter 类规范,代码示例遵循MIT开源协议,可自由使用。

0