String.format() and hex numbers in Java

走远了吗. 提交于 2019-12-05 08:20:43

问题


I'm trying to figure out why String.format() is behaving the way it does.

Context: Systems programming class, writing an assembler.

There is a 5 character hex field in the object file, which I am creating from a value.

Tried using: String.format("%05X", decInt);

This works as intended for positive numbers (11 -> 0000B) However it fails for negative numbers (-1 -> FFFFFFFF instead of FFFFF)

I suppose I could just take a substring of the last 5 characters, but I would still like to figure out why it behaves this way.


回答1:


The width used in format is always a minimum width. In this case, instead of using sub string operations I would suggest:

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



回答2:


Format width only works to create a minimum number of digits, and only has effect on leading zeroes.

Instead of substring, you could use a bit mask:

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

By the way, 11 -> 0000B, not 0000A as claimed in your question.



来源:https://stackoverflow.com/questions/9610254/string-format-and-hex-numbers-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!