Невозможно вернуться к исходным байтам, учитывая то, как вы добавляете их в свой построитель строк.
Возьмите этот пример:
byte[] bFile = "This is the input string".getBytes();
StringBuilder massageBuilder = new StringBuilder();
for (int i = 0; i < bFile.length; i++)
massageBuilder.append(bFile[i]);
Когда вы печатаете massageBuilder
, вы получите
8410410511532105115321161041013210511011211711632115116114105110103
Они становятся случайной последовательностью чисел, которая не дает возможности отличить оригинальные байты.Один или несколько символов в результирующей строке будут связаны с одним вводом byte
.Даже если бы вы знали набор символов исходного текста, у вас все равно были бы проблемы из-за неоднозначных последовательностей.
Это могло бы быть возможно, если бы вы использовали какой-либо разделитель ...
massageBuilder.append(bFile[i]).append("-");
//84~104~105~115~32~105~115~32~116~104~101~32~105~110~112~117~116~...
В этом случае вы можете разделить его и перестроить свой байтовый массив.