Разбить с помощью метода split() строку с двоичным числом на октеты?

121
19 января 2021, 17:00

Есть двоичное число:

String s = "10000000001000000000101000000001" 

Можно ли с помощью метода split() разбить его на октеты?

Answer 1

console.log("10000000001000000000101000000001".split(/(?!^)(?=(?:.{8})+$)/))

Answer 2

Сплит тут подходит плохо... Регулярка по факту не очень быстрая. Почему не написать простой метод? Что-то типа этого:

private String[] divideBy (String numb, int digitNumb){
    final String[]result = new String[numb.length()/digitNumb];
    for (int i = 0; i < numb.length()/digitNumb; i++) {
        result[i] = numb.substring(i*digitNumb, i*digitNumb+digitNumb);
    }
    return result;
}

Передаете первым аргументом свое число в стринге, а во втором количество цифр, на которое нужно поделить (по условию это 8, но можно поделить на любое количество) и получаете обычный массив.

Answer 3

Используйте

String s = "10000000001000000000101000000001";
String[] octets = s.split("(?<=\\G.{8})");
System.out.println(Arrays.toString(octets));
// = [10000000, 00100000, 00001010, 00000001]

См. демо онлайн.

Шаблон (?<=\G.{8}) представляет собой блок предварительного просмотра назад и находит позицию после любых первых восьми символов, а потом ещё после восьми и так далее.

READ ALSO
SOLID и RxJava архитектура приложения

SOLID и RxJava архитектура приложения

Предположим что разрабатывается приложениеВыбран паттерн MVP

118
Timeout async/await

Timeout async/await

Я промисифицирую функцию function example() {

120
Qt5: Запрос представления в QTableView

Qt5: Запрос представления в QTableView

Есть некоторые представленияНужно вывести их в QTableView, а так же запрос всех представления существующих в БД, результат это

106