2013-08-07 64 views
1

我目前正在處理一些內存地址,我需要填充到64位的完整長度。舉個例子:Java填充地址到64位

0x7ffe0 - needs to be padded to: 0x000000007ffe0000 

本質上,每個值需要被填充到16個數字與正確的位置的零。

我知道String.format可能會這樣做,但我不確定DecimalFormat是否更快,或更好的方法來做到這一點。

任何意見將不勝感激。

由於

UPDATE

這是存儲器中的信息是如何存儲在文件中:

enter image description here

本質上,前8個字節是一個範圍的開始,和最後8個是範圍結束的地方。

我可以訪問的另一個程序是向我顯示完整的64位填充地址,所以我不完全確定它是如何執行填充的。

+1

在你有地址開始與什麼格式的一些事情嗎?另外,你會如何區分0x000000007ffe0000和0x000000000007ffe0之間的區別?我會把你有的數字解釋爲後者,所以我不確定你是如何得到前者的。 – qaphla

+0

要清楚的是,你問的是如何將「long」格式化爲「完整的64位」字符串格式,對嗎?我不明白你會如何使用DecimalFormat。 –

回答

1

試試這個

String s = String.format("0x%016x", 0x7ffe0); 

的DecimalFormat僅帶有小數工作不十六進制

+0

謝謝Evgeniy。 String.format(「0x%016x」,0x7ffe0)產生0x000000000007ffe0。在開始時有11個零,應該只有8個。有什麼建議嗎? – Tony

+0

我認爲這裏的問題是你的十六進制數字是非標準格式。通常假定右邊沒有隱藏的零,所以如果你想得到這個結果,你必須以0x7ffe0000而不是0x7ffe0開始。 – qaphla

+0

啊,好的,謝謝。我會再看看它們的存儲方式。謝謝 – Tony

1

嘗試這樣

System.out.printf("0x%016x", 0x7ffe0);