簡體   English   中英

將整數轉換為十六進制Java

[英]Converting Integer To Hex Java

我的應用程式需要標題中所寫的int []格式。

我正在從HashMap獲取值,該HashMap是使用[00,00,00,00]格式填充到XML文件中的,但是對於每個前面有0x int ,我都需要它。

我試圖通過for循環對其進行“轉換”:

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

但是我不能以這種方式從String轉換為int

然后,我嘗試直接在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);
    }

返回之前。 現在它可以工作了...但是我不知道為什么它可以工作:(

在任何類型的語言中,int / number值都沒有格式。 Java使用2的補碼將int值存儲為4個字節的方式,因此0或0x0或00(八進制)或0b是相同的值:二進制字中包含32個零。

第二編輯:

我認為您的工程過度。 您應該使用的是

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)
for(int i = 0; i < value.length; i++){
    value[i] = Integer.valueOf(String.valueOf(value[i]), 16);
}

嘗試這個。 如果要十六進制值。 或者,如果您想要十六進制字符串,則可以使用以下代碼。

Integer.toHexString(integerValue)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM