【问题标题】:Trying to not Omit Leading 0's when writing from Int to Hex using buffered writer使用缓冲写入器从 Int 写入 Hex 时尽量不省略前导 0
【发布时间】:2013-08-26 16:39:13
【问题描述】:

我创建缓冲写入器

BufferedWriter errorReport = new BufferedWriter(new FileWriter("ErrorReport.txt"));

然后我想在将整数转换为十六进制时写。

  errorReport.write(Integer.toHexString(version))

这很好用,除了它在写入最小可能长度时省略了前导 0。假设“版本”的长度是一个字节,只打印 6。好吧,我知道实际值实际上是 06。如何保留这些前导 0?

我尝试了 errorReport.write(String.format("%03x", Integer.toHexString(version)),但得到了一个错误,因为非法FormatConversionException x != java.lang.String

【问题讨论】:

    标签: java string hex bufferedwriter


    【解决方案1】:

    x 指定十六进制,因此format 将通过直接传递整数来执行转换

    errorReport.write(String.format("%03x", version)); 
    

    【讨论】:

    • 0 - 用零和 3 填充 - 将宽度设置为 3 和 'x' 用于十六进制 refer
    • 美丽。是的。我就像我把它转换了两次。谢谢
    【解决方案2】:

    你很亲密。 JVM 抱怨您正在尝试对字符串进行十六进制格式化。试试errorReport.write(String.format("%03x", version))

    【讨论】:

    • 美丽。是的。我就像我把它转换了两次。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 2015-07-31
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    相关资源
    最近更新 更多