2014-02-17 179 views
0

我需要我的應用程序這個int []格式,因爲我在標題中寫道。整數轉換爲十六進制Java

我取的值,且其中充滿了一個XML文件與該格式[00,00,00,00]一個HashMap的,但我需要它爲每一個int在前面0x

我試圖通過一個for循環「轉換」是:

for(int i = 0; i < value.length; i++){ 
     value[i] = "0x" + value[i]; 
    } 

,但我不能轉換從Stringint這種方式。

然後我試圖直接在XML文件中更改它,但是然後我的應用程序崩潰與NPE。

現在我想知道是否有解決我的問題。

編輯:

對於進一步的解釋:

我嘗試過這一點,但沒有奏效:

public int[] getValue(Map map, String key) { 
    Map keyMap = map; 
    int[] value = {}; 

    @SuppressWarnings("rawtypes") 
    Iterator iter = keyMap.entrySet().iterator(); 

    while (iter.hasNext()) { 
     @SuppressWarnings("rawtypes") 
     Map.Entry mEntry = (Map.Entry) iter.next(); 
     if (mEntry.getKey().equals(key)) { 
      value = (int[]) mEntry.getValue(); 
     } 
    } 
    return value; 
} 

然後我嘗試了一個答案,並添加

for(int i = 0; i < value.length; i++){ 
     value[i] = Integer.valueOf(String.valueOf(value[i]), 16); 
    } 

之前返回。現在,它的作品...但我不知道爲什麼它的工作原理:(

+1

您是否嘗試過搜索「Java的整數轉換爲字符串」互聯網? – Smutje

+0

我不想要一個字符串,我希望它是這樣的:'int [] int = {0x00,0x00,0x00,0x00}' – Fraggles

+5

這是不可能的,因爲'int'是'int' - 十六進制前綴只用於解釋和不用於計算。 – Smutje

回答

2

在任何類型的語言中int/number值都沒有格式。Java存儲int值的方式是使用二進制補碼的4字節數,所以0或0x0或00(八進制)或0b是相同的值:a中的32個零binary word。

SECOND EDIT:

我認爲你是過度工程。你應該使用的是一個

Map<String,int[]> map; 

然後,如果你寫map.get(key),你會得到你要找的。

新的解釋:以前的解決方案的工作,因爲當你閱讀存儲的值作爲小數者的XML:

String s="80"; 
int i= Integer.valueOf(s); //it stores 80 (decimal value) 
int value= Integer.valueOf(String.valueOf(i),16); //It stores 128, or 0x80 (hex value) 
+0

關鍵只是一個字符串,以更好地識別存儲到它的值(爲了更好的閱讀目的) – Fraggles

+0

沒問題,'String.valueOf()'是現在被刪除的一個答案的一部分(不知道爲什麼他刪除了它)。 HMM ...因爲我現在試圖刪除String.valueOf部分,它確實說'Integer類型中的方法valueOf(int)不適用於參數(int,int)' – Fraggles

+0

是的,我在搞自己。 ..讓我試着再次理解你需要的東西:P –

1
for(int i = 0; i < value.length; i++){ 
    value[i] = Integer.valueOf(String.valueOf(value[i]), 16); 
} 

試試這個。如果你想要的十六進制值,或者在情況下,如果你願意,你可以使用下面的代碼十六進制字符串。

Integer.toHexString(integerValue) 
+1

你的整數到整數轉換是毫無意義的。 – Claus

+0

沒有得到,你可以進一步解釋嗎? – Triode

+0

查看我的回答瞭解更多詳情 –