2013-11-12 2 views
0

Я пытаюсь преобразовать небольшую строку шестнадцатеричных чисел в массив целых чисел, не очень успешно до сих пор. Я попытался найти такие проблемы на нескольких веб-сайтах, но большинство придумало шестнадцатеричное число, просто большое, что здесь не так. Текущий код:Преобразование маленькой шестнадцатеричной строки в целое число

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-х чисел я бы ожидать, он печатает те же (HEX) числа, которые я начал с (в данном случае: 44 74 71 20)

Мне не разрешено включать дополнительные библиотеки или пакеты, я могу работать только с кодами и классами, которые я создаю. Точка моего кода - получить десятичные значения. println должен только проверить, что я получил (но если кто-то знает, как правильно напечатать эту строку, ответьте также:)).

(немного больше сопутствующая информация: я строй простого шифратора для текста, я работаю на декодере теперь, и мне нужно значения ASCII, связанные с шестнадцатеричными числами)

+1

это не полный код, только то, что, по моему мнению, немного актуально, если вы считаете, что это usef ull, чтобы увидеть полный код, я могу загрузить его. – RedGurilla

+0

, поэтому решение должно разместить «16» за моей переменной. – RedGurilla

ответ

0

Вы должны предоставить способ преобразования Integer.parseInt(String s, int radix) с радиксом, (который 16 для Hex), так что вы должны изменить эту строку

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

в

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

причина, почему вы получить те же номера из-за того, что если вы не предоставляете radix, то по умолчанию он равен 10.

+0

вы здорово, это очень помогло ... на самом деле он зафиксировал весь код! – RedGurilla

1

[[email protected] является это строка представление самого объекта массива не содержимого массива.

Если вы хотите напечатать его содержимое, используйте Arrays.toString(int [] a):

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

Если вы не можете использовать этот метод, вы можете реализовать простой цикл:

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

, когда я это делаю, я получаю сообщение об ошибке «Arrays не может быть разрешен» – RedGurilla

+0

@ user2984993 Добавить import 'java.util.Arrays' –

+0

Мне жаль говорить, но мне не разрешено это делать, i 'm разрешено использовать только библиотеки ... я добавлю это на вопрос – RedGurilla

0

You «Печать адреса массива - обычная ошибка. Вместо этого используйте System.out.println(Arrays.toString(asciiArray)).

+0

, когда я это делаю, я получаю сообщение об ошибке " Массивы не могут быть решены » – RedGurilla

Смежные вопросы