Java 中的 String.format() 和十六进制数字

2022-08-31 17:14:12

我试图弄清楚为什么会以这种方式行事。String.format()

上下文:系统编程类,编写汇编程序。

对象文件中有一个 5 个字符的十六进制字段,我是从值创建的。

已尝试使用:String.format("%05X", decInt);

这适用于正数 (11 ->) 但对于负数 (-1 -> 而不是0000BFFFFFFFFFFFFF)

我想我可以只取最后5个字符的子字符串,但我仍然想弄清楚为什么它以这种方式表现。


答案 1

格式中使用的宽度始终为最小宽度。在这种情况下,我建议不要使用子字符串操作:

  String.format("%05X", decInt & 0xFFFFF);

答案 2

格式宽度仅用于创建最小位数,并且仅对前导零有效。

您可以使用位掩码代替子字符串:

String.format("%05X", decInt & 0x0FFFFF)

顺便说一句, -> ,而不是您的问题中声称的那样。110000B0000A