Условие
Публичный статический метод 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;
}