Java中如何给十六进制字符串前补0使其固定长度为4位?
解决方案
方法1:直接格式化int生成目标字符串(最优,无需额外处理)
你不需要先转十六进制字符串再补0,直接用String.format的十六进制格式化规则即可一步实现:
%X表示输出大写十六进制04表示长度不足4位时自动在前补0
示例代码:
public static void main(String[] args) { int count = 255; // 对应十六进制FF,可替换为你的动态count变量 String orderID = String.format("%04X", count); System.out.println(orderID); // 输出00FF }
方法2:对已有的十六进制字符串补0(无需引入第三方依赖)
如果你已经拿到了现成的十六进制字符串,不需要用StringUtils.leftPad,用JDK原生方法即可实现:
- Java 11及以上版本:
String hexStr = "FF"; if (hexStr.length() < 4) { hexStr = "0".repeat(4 - hexStr.length()) + hexStr; } // 输出00FF
- 低版本Java兼容写法:
String hexStr = "FF"; hexStr = String.format("%4s", hexStr).replace(' ', '0'); // 输出00FF
原代码不生效的原因
你之前使用%04d格式化的是十进制整数,所以得到的是十进制的补0结果,不是十六进制格式。IntelliJ无法识别StringUtils.leftPad是因为你没有导入Apache Commons Lang3的依赖,上述方案全部用JDK原生API实现,不需要引入额外依赖。
内容的提问来源于stack exchange,提问作者Ava-123
相关产品推荐
相关产品推荐

