【问题标题】:How can I pad a hexadecimal digit with 0 in java? [duplicate]java - 如何在java中用0填充十六进制数字? [复制]
【发布时间】: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


【解决方案1】:
String.format("%04x", 255)

有输出

00ff

(或使用X 表示大写十六进制数字)

作为@user16320675点,更多关于Formatterhere的信息。

【讨论】:

  • 成功了。之前没找到X,谢谢你的回答!
猜你喜欢
  • 2020-02-09
  • 2021-11-26
  • 1970-01-01
  • 2015-04-30
  • 1970-01-01
  • 1970-01-01
  • 2021-09-18
  • 2012-03-25
  • 2010-11-19
相关资源
最近更新 更多