Base64.getDecoder () возвращает другой ответ с одним и тем же вводом строки - PullRequest
0 голосов
/ 28 мая 2018

Я запутался в этой проблеме.Платформа на win7 java8.

Пример кода:

String encryptedData = "0019ZfGO0nefTb2kIuHO0M3hGO09ZfGF";
Base64.Decoder decoder = Base64.getDecoder();
byte[] dataByte = decoder.decode(encryptedData);
System.out.println(dataByte);
dataByte = decoder.decode(encryptedData);
System.out.println(dataByte);

Вывод:

[B@15db9742
[B@6d06d69c

Точный ввод получил другой результат.Не знаете, есть ли возможность очистить статус и сделать результат постоянным каждый раз?

Спасибо!

1 Ответ

0 голосов
/ 28 мая 2018

В Java массивы не переопределяют toString(), поэтому, если вы попытаетесь напечатать один из них напрямую, вы получите «className + @ + шестнадцатеричное значение hashCode массива», как определено Object.toString()
Примечание. Простая печать массива по ссылочной переменной означает, что вы вызываете метод toString() этого объекта массива.

Поскольку decoder.decode(encryptedData) возвращает new byte[] каждый раз, следовательно, он дает другойзначение, когда вы просто печатаете ссылочную переменную.
Пример: System.out.println(dataByte);//output:[B@15db9742

Вы можете использовать стандартные библиотечные функции для печати содержимого массива.Есть много способов достичь этого.Вот лишь несколько примеров:
System.out.println(Arrays.toString(dataByte));
System.out.println(dataByte.toList());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...