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
在你的问题声称。