Ответ 1
Ширина, используемая в формате, всегда минимальная. В этом случае вместо использования операций подстроки я бы предложил:
String.format("%05X", decInt & 0xFFFFF);
Я пытаюсь понять, почему String.format()
ведет себя так, как это делает.
Контекст: класс системного программирования, написание ассемблера.
В объектном файле есть 5-значное шестнадцатеричное поле, которое я создаю из значения.
Пробовал использовать: String.format("%05X", decInt);
Это работает как предназначено для положительных чисел
(11 → 0000B
)
Однако он не работает для отрицательных чисел
(-1 → FFFFFFFF
вместо FFFFF
)
Я предполагаю, что я мог бы просто взять подстроку из последних 5 символов, но мне все равно хотелось бы выяснить, почему она ведет себя таким образом.
Ширина, используемая в формате, всегда минимальная. В этом случае вместо использования операций подстроки я бы предложил:
String.format("%05X", decInt & 0xFFFFF);
Ширина формата работает только для создания минимального количества цифр и влияет только на ведущие нули.
Вместо подстроки вы можете использовать битовую маску:
String.format("%05X", decInt & 0x0FFFFF)
Кстати, 11
→ 0000B
, а не 0000A
, как утверждается в вашем вопросе.