簡體   English   中英

將小十六進制字符串轉換為整數

[英]Converting a small hexadecimal String into a integer

我正在嘗試將一小串十六進制數字轉換為整數數組,直到現在還不太成功。 我試圖在多個網站上找到此類問題,但大多數都想出了十六進制數字太大的問題,在此情況並非如此。 當前代碼:

static String decode(String message) {
        int indexC = 0;
        int asciiCode = 0;
        String [] codeArray = message.split(" ");
        int [] asciiArray = new int[4];

        while (indexC < codeArray.length){
            asciiCode = Integer.parseInt(codeArray[indexC]);
            asciiArray[indexC] = asciiCode;
        }
            for (int i = 0; i < asciiArray.length; i++){
        System.out.println(asciiArray[i]);  
            }
    }

我確實得到了system.out.println的結果,但它沒有打印我期望的4個數字,而是打印了與開始時相同的(十六進制)數字(在這種情況下:44 74 71 20)

我不允許包含額外的庫或包,我只能使用自己創建的代碼和類。 我的代碼的重點是獲取十進制值。 println只是檢查我得到了什么(但是,如果有人知道如何正確打印該行,也請做出響應;))。

(更多背景信息:我正在為文本構建一個簡單的加密器,現在正在解碼器上工作,並且我需要將ascii值連接到十六進制數字)

[I@221a5d08是數組對象本身的字符串表示形式,而不是數組的內容。

如果要打印其內容,請使用Arrays.toString(int [] a)

System.out.println(Arrays.toString(asciiArray));

如果不允許使用此方法,則可以實現一個簡單的for循環:

for(int i = 0; i < asciiArray.length; i++)
    System.out.print(asciiArry[i]);

您正在打印數組的地址,這是一個常見錯誤。 請改用System.out.println(Arrays.toString(asciiArray))

您需要為轉換方法Integer.parseInt(String s, int radix)提供一個基數(十六進制為16),因此您需要更改此行

asciiCode = Integer.parseInt(codeArray[indexC]);

asciiCode = Integer.parseInt(codeArray[indexC], 16);

之所以得出相同的數字,是因為如果不提供基數,則默認為10。

暫無
暫無

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

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