Возможно, это не лучший способ преобразовать его обратно в String
с использованием потоков;Ваш существующий цикл while
выглядит чище и может быть более производительным.Однако существует потоковое решение.
String result = IntStream.range(0, 4)
.map(i -> (value >>> 24 - (i * 8)) & 0xFF)
.dropWhile(i -> i == 0)
.mapToObj(v -> String.valueOf( (char) v))
.collect(Collectors.joining());
Это генерирует некоторые байтовые индексы, принимает определенное значение байта, отображает его в char
, а затем соединяет их обратно в String
.Он также отбрасывает первые 0 значений, используя Java 9+ метод dropWhile
.
Я исправил это, чтобы получить правильный порядок, добавив «24 -», чтобы получить наиболее значимыйпервый байт.
При value
, равном 0x10101 * 65
, возвращается "AAA"
.С value
из 0x10101 * 65 + 1
это возвращает "AAB"
.