2015-03-31 79 views
-2

我有一个int数字1238,当我转换为具有Integer.toHexString函数的十六进制字符串时,它会返回我4d6。有没有任何可能的方式,我可以格式化,所以它会返回我04d6?如果您可以为一般情况提供解决方案,而不是此特定情况,那将是非常好的。 谢谢。将int转换为十六进制字符串

+0

的哪些错误的倍数与触发 “0” + Integer.toHexString(?准确地说:我建议使用“0x”作为前缀 - “0”通常是OCTAL数字的前缀;不是六角形。 – GhostCat 2015-03-31 13:39:37

+0

这是一个很好的问题,可以用作学习体验。自己解决。 (有大约20种不同的方式来处理它,所以它不应该太难找到一个。) – 2015-03-31 13:40:29

+0

这篇文章演示了如何做到这一点2位:http://stackoverflow.com/questions/8689526/integer-to -two-digits-hex-in-java这很容易扩展到4位 – 2015-03-31 13:51:53

回答

2

这将是巨大的,如果你能提供一般的情况下的解决方案,而不是 这种特殊情况下

这是一个快速解决方案,将在案件中添加左侧0十六进制字符串长度不)2.

StringBuilder sb = new StringBuilder(); 
sb.append(Integer.toHexString(myInt)); 
if (sb.length() % 2 > 0) { 
    sb.insert(0, '0'); // pad with leading zero if needed 
} 
String hex = sb.toString(); 
0
System.out.println(String.format("%04x",1238)); -> "04d6" 
System.out.println(String.format("%#04x",1238)); -> "0x4d6" 
+0

不适用于较大的输入,如123899 – Drakes 2015-03-31 13:56:18

+0

问题只是关于整数 – Robert 2015-03-31 17:39:23

+0

我的意思是,你的解决方案很聪明,但只适用于一个小像1238这样的整数,不是,比如说123899 – Drakes 2015-03-31 22:35:59

相关问题