在Java中整数为两位十六进制数

Sal*_*kci 71 java hex integer

我需要在Java中将整数值更改为2位十六进制值.有没有办法解决这个问题.谢谢

我的最大数字是63,最小的数字是0.我想要小值的前导零.

Gab*_*iro 134

String.format("%02X", value);
Run Code Online (Sandbox Code Playgroud)

如果您使用的X不是x aristar的建议,那么您不需要使用.toUpperCase().

  • 这是目前最好的答案. (8认同)

zie*_*mer 29

Integer.toHexString(42);
Run Code Online (Sandbox Code Playgroud)

Javadoc:http: //docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#toHexString(int)

请注意,这可能会给你超过2位数!(一个整数是4个字节,所以你可能会得到8个字符.)

只要你绝对确定你只处理单字节值(255或更小),这就是获取填充的一些方法:

Integer.toHexString(0x100 | 42).substring(1)
Run Code Online (Sandbox Code Playgroud)

在Java中使用零填充左边填充整数(非十进制格式)的更多(和更好)解决方案.

  • 不错的零填充黑客:) (3认同)

ari*_*tar 24

String.format("%02X", (0xFF & value));    
Run Code Online (Sandbox Code Playgroud)

  • 有人可以解释为什么这样做有点用0xFF吗?这就是为什么SO上的答案不应该只是代码 (7认同)
  • OxFF&(字节)值只是将有符号字节转换为无符号字节.(int)-1 = 0xFFFFFFFF,(int)( - 1&0xFf)= 0xFF (4认同)
  • %02X 说明符指定至少两位数字。如果您想要恰好两位数字(丢弃较高位),那么您需要按位与。 (2认同)

Asa*_*aph 14

使用Integer.toHexString().如果你最终得到一个数字,别忘了用前导零填充.如果您的整数大于255,您将获得超过2位数.

StringBuilder sb = new StringBuilder();
sb.append(Integer.toHexString(myInt));
if (sb.length() < 2) {
    sb.insert(0, '0'); // pad with leading zero if needed
}
String hex = sb.toString();
Run Code Online (Sandbox Code Playgroud)

  • 使用StringBuilder实际上是一种改进吗?http://pastebin.com/KyS06JMz (2认同)