Java中的String.format()和hex数字

我试图找出为什么String.format()是行为的方式。

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

目标文件中有一个5字符的hex字段,我从一个值创build。

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

这符合正数(11 – > 0000B )的要求,但是对于负数(-1 – > FFFFFFFF而不是FFFFF

我想我可以把最后5个字符的子string,但我仍然想弄清楚为什么这样的行为。

格式中使用的宽度始终是最小宽度。 在这种情况下,而不是使用子string操作,我会build议:

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

格式宽度只能用于创build最小位数,只对前导零起作用。

而不是子string,你可以使用一个位掩码:

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

顺便说一句, 11 – > 0000B ,而不是0000A在你的问题声称。