Преобразование строки, состоящей из восьмеричных чисел, в текст UTF-8 - PullRequest
0 голосов
/ 23 сентября 2018

Здравствуйте, это мой первый вопрос на этом сайте.Я делаю программу, которая преобразует текст в восьмеричный, но также восьмеричный в текст utf-8.

150 145 154 154 157 40 167 157 162 154 144 должен декодироваться как hello world

Вот мой код

source = source.replaceAll(" ", "");
int integer = Integer.parseInt(source,8);
List<Byte> queue = new LinkedList<>();
for (String s : source.split(" ")) {
    if (s != null && s != "") {
            for (byte b : s.getBytes()) {
                    queue.add(b);
            }
    }
}


Byte[] byteArr = new Byte[queue.size()];
byteArr = queue.toArray(byteArr);

byte[] b2 = new byte[byteArr.length];
for (int i = 0; i < byteArr.length; i++)
{
    b2[i] = byteArr[i];
}

String answer = new String(b2, StandardCharsets.UTF_8);
edittextbinary.setText(answer);

Просто возвращает то же восьмеричное значение и не декодирует.Мне нужна помощь, чтобы извлечь восьмеричные числа и преобразовать их в десятичные, а затем декодировать в UTF-8

1 Ответ

0 голосов
/ 23 сентября 2018

Надеюсь, это поможет вам.

public static void main(String[] args) {

  String octalString = "150 145 154 154 157 40 167 157 162 154 144";

  StringTokenizer tokeniser = new StringTokenizer(octalString);
  int len = tokeniser.countTokens();
  int[] octalArray = new int[len];
  byte[] octalByteArray = new byte[len];

  for (int i = 0; tokeniser.hasMoreTokens(); i++) {
    octalArray[i] = Integer.parseInt(tokeniser.nextToken(),8);
    octalByteArray[i] = (byte) octalArray[i];
  }
  System.out.println(new String(octalByteArray, "UTF-8"));
}
...