Long.toHexString() 是 Java 中将 long 转为小写无前缀十六进制字符串的最直接高效方式,自动处理正负数补码,输出不补零;-1L 得 "ffffffffffffffff",255L 得 "ff",0L 得 "0"。

Long.toHexString() 是 Java 中最直接、高效的方式,将 long 类型数值转为小写、无前缀(如 0x)、不补零的十六进制字符串。
基本用法与特点
该方法由 java.lang.Long 提供,是静态工具方法,无需实例化。它会自动处理正负数:对负数采用补码表示,并完整输出 16 位十六进制字符(因为 long 是 64 位,对应 16 个十六进制位)。
- 输入
255L→ 输出"ff"(不补零,最小表示) - 输入
-1L→ 输出"ffffffffffffffff"(64 位全 1 的补码) - 输入
0L→ 输出"0"
若需带 0x 前缀或固定长度(如 16 位)
toHexString() 本身不提供格式修饰,需手动拼接或使用辅助方式:
- 加前缀:
"0x" + Long.toHexString(value) - 补零至 16 位(适用于地址/哈希等场景):
String.format("%016x", value)—— 更简洁安全,自动处理负数和位宽 - 转大写:
Long.toHexString(value).toUpperCase()
注意边界与常见误区
该方法不会抛出异常,但要注意语义含义:
- 它转换的是数值的二进制补码表示,不是“绝对值”的十六进制 —— 这对负数很关键
- 不支持自定义字母大小写或分隔符,如需更复杂格式(如
00:ff:aa:...),应结合String.format或BigInteger - 性能极高,比
String.format快约 2–3 倍,适合高频调用场景
替代方案对比(何时不用它)
如果需求超出基础转换,可考虑:
- 需要带符号或十进制对照:用
Long.toString(value, 16)(功能等价,但略慢) - 需严格 16 位且兼容负数:优先用
String.format("%016x", value) - 处理超大整数或需任意进制:改用
BigInteger.toString(value, 16)










