Fit*_*zoh 55 java string formatting hex twos-complement
我试图弄清楚为什么String.format()它的行为方式.
上下文:系统编程类,编写汇编程序.
目标文件中有一个5字符的十六进制字段,我从一个值创建.
尝试使用: String.format("%05X", decInt);
这适用于正数(11 - > 0000B)然而它不适用于负数(-1 - > FFFFFFFF而不是FFFFF)
我想我可以只取最后5个字符的子字符串,但我还是想弄清楚它为什么会这样.
Dan*_*tin 79
格式中使用的宽度始终是最小宽度.在这种情况下,我建议不要使用子字符串操作:
String.format("%05X", decInt & 0xFFFFF);
Run Code Online (Sandbox Code Playgroud)
Boh*_*ian 13
格式宽度仅适用于创建最小位数,并且仅对前导零有影响.
您可以使用位掩码代替子字符串:
String.format("%05X", decInt & 0x0FFFFF)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,11- > 0000B,不像0000A你的问题所声称的那样.