2015-03-31 86 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

相關問題