[英]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.