Условие
Публичный статический метод toHex(String) должен переводить строковое представление двоичного числа, полученное в качестве входящего параметра, из двоичной системы счисления в шестнадцатеричную и возвращать его строковое представление. А публичный статический метод toBinary(String) наоборот — из строкового представления шестнадцатеричного числа в строковое представление двоичного числа.

Методы работают только с не пустыми строками.
Если входящий параметр — пустая строка или null, то оба метода возвращают пустую строку.
Если входящий параметр метода toHex(String) содержит любой символ, кроме 0 или 1, то метод возвращает пустую строку.
Если входящий параметр метода toBinary(String) содержит любой символ, кроме цифр от 0 до 9 или латинскую букву от a до f (в нижнем регистре), то метод возвращает пустую строку.

Твоя задача — реализовать эти методы.

Один из алгоритмов перевода строкового представления двоичного числа в строковое представление шестнадцатеричного числа следующий:

Проверяем длину строки, полученной входящим параметром. Она должна быть кратна 4.
Если это не так, то добавляем нужное количество 0 в начало строки.
Берем каждые четыре символа (бита) и проверяем, какому символу шестнадцатеричной кодировки он соответствует.
Например:

двоичное представление — "100111010000", где "1001""9", "1101""d", "0000""0",
шестнадцатеричное представление — "9d0".
Один из алгоритмов перевода строкового представления шестнадцатеричного числа в строковое представление двоичного числа следующий:
Берем каждый символ и проверяем какому двоичному числу (4 бита) он соответствует.

Например:

шестнадцатеричное представление — "9d0", где "9""1001", "d""1101", "0""0000",
двоичное представление — "100111010000".
Метод main() не принимает участие в тестировании.


Requirements:
1. Нужно, чтобы метод toHex(String) был реализован согласно условию.
2. Нужно, чтобы метод toBinary(String) был реализован согласно условию.
3. Методы Integer.toBinaryString(int) и Long.toBinaryString(int) использовать нельзя.
4. Методы Integer.toHexString(int) и Long.toHexString(int) использовать нельзя.
5. Методы Integer.parseInt(String, int) и Long.parseLong(String, int) использовать нельзя.
6. Методы Integer.toString(int, int) и Long.toString(long, int) использовать нельзя.
7. Объект типа BigInteger использовать нельзя.
8. Объект типа BigDecimal использовать нельзя.
Что ниже я реализовал
Проверяем длину строки, полученной входящим параметром. Она должна быть кратна 4.
Если это не так, то добавляем нужное количество 0 в начало строки.
Вот дальше не пойму как сделать чтобы он вытаскивал каждые 4 символа (бита) и переводил их в шестнадцатеричную кодировку. Наведите на мысль пожалуйста.
public static String toHex(String binaryNumber) {
        final String HEX = "0123456789abcdef";
        if (binaryNumber == "" || binaryNumber == null){
            return binaryNumber;
        }
        if (binaryNumber.length() % 4 != 0){
            while (binaryNumber.length() % 4 != 0){
                binaryNumber = "0" + binaryNumber;
            }
        }
        String hex = "";
        String[] array = HEX.split("");
        char[] array1 = binaryNumber.toCharArray();
        for (int i = 0; i < binaryNumber.length(); i++) {

        }
        //напишите тут ваш код
        return binaryNumber;
    }