byte array в string как “0” и “1”

156
13 мая 2019, 18:10

Как преобразовать массив битов в текстовый вид так, чтобы это выглядело как набор из 0 и 1?

Если попытаться использовать метод bytes.ToString() то получается вот это: [B@a0e2ce5, а мне нужно условно 101100110101

Есть ли готовый стандартный метод такого преобразования?

Answer 1
  1. Вариант на stream api:

    Byte[] bytes = {1,0,1,1,0,0,1,1,0,1,0,1};
    Arrays.stream(bytes).forEach((b) -> System.out.print(b));
    // 101100110101
    
  2. если нужен именно массив byte[]:

    byte[] bytes = {1,0,1,1,0,0,1,1,0,1,0,1};
    for (int b : bytes) System.out.print(b);
    // 101100110101
    
  3. если нужно красиво оформить:

    byte[] bytes = {1,0,1,1,0,0,1,1,0,1,0,1};
    System.out.println(Arrays.toString(bytes));
    // [1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1]
    
Answer 2

Есть рядом с упомянутым методом и Integer.toBinaryString

Только обратите внимание, что лидирующие нули обрезаются, так что при необходимости дополняйте нулями вручную

Кроме того, toString принимает аргумент radix

Answer 3

Если твой массив состоит из нулей и единиц, то так:
System.out.print(Arrays.toString(твой_массив));

READ ALSO
JAVA, maven, servlet [закрыт]

JAVA, maven, servlet [закрыт]

Зачем нужен maven, когда работаем с сервлетами?

171
Условия для if и else

Условия для if и else

Хочу создать условия для вывода информации о пассажирах:

157