【发布时间】:2021-11-13 14:49:44
【问题描述】:
我试图在开头用 0 填充十六进制数字,使其长度始终为 4。例如,FF 将被填充为 00FF。我曾尝试使用 String.format("%04d", number) 但它不起作用,因为我的十六进制数字实际上是一个字符串。 我也尝试过使用 StringUtils.leftPad() 但由于某种原因,IntelliJ 无法检测到它。
请注意,我的计数会发生变化,但我还没有在这里表示它,因为我还没有实现它。这是我的示例代码。谢谢。
public static void main(String[] args) {
int count = 0;
String orderID = Integer.toHexString(count).toUpperCase();
System.out.println(String.format("%04d", Integer.valueOf(orderID)));
}
【问题讨论】:
-
String orderID = Integer.toHexString(count).toUpperCase(); String.format("%04d", Integer.valueOf(orderID))... 什么?只需去掉第一行并将count传递给String.format。没有理由从int转到String回到int只是为了格式化另一个String。 -
直接使用
format将整数格式化为十六进制(使用X而不是格式字符串中的d)。 -
可能相关:Integer to two digits hex in Java ->
System.out.printf("%04X", count);。您可以在格式末尾添加%n以生成类似于println所做的行分隔符:System.out.printf("%04X%n", count); -
@tkausl,这是我试过的方法,当然不正确,最后我需要的是字符串,而不是int。
标签: java string hex number-formatting