Валидатор выдаёт ограничение на принятие, но ведь решение то есть!
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
private static final String HEX = "0123456789abcdef";
private static final String[] BYNARY = {"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100",
"1101","1110","111"};
public static void main(String[] args) {
String binaryNumber = "100111010000";
System.out.println("Двоичное число " + binaryNumber + " равно шестнадцатеричному числу " + toHex(binaryNumber));
String hexNumber = "9d0";
System.out.println("Шестнадцатеричное число " + hexNumber + " равно двоичному числу " + toBinary(hexNumber));
}
public static String toHex(String binaryNumber) {
//напишите тут ваш код
String hexNumber = "";
String decode;
if(binaryNumber == null || binaryNumber.equals("")) return hexNumber;
// if(binaryNumber.equals(0) || binaryNumber.equals(1)) return "";
for(int i = 0; i < binaryNumber.length(); i++) {
char temp = binaryNumber.charAt(i);
int temp2 = Character.digit(temp, 10);
if(temp2 != 0 && temp2 != 1 ) {
return "";
}
}
StringBuilder stringadd = new StringBuilder(binaryNumber);
for (int i = 0; i < stringadd.length() % 4; i++){
if (stringadd.length() % 4 != 0 ) {
stringadd.insert(0,0);
}
}
for (int i = 0;i < stringadd.length(); i += 4) {
decode = stringadd.substring(i,i + 4);
for(int j = 0; j < 15; j++) {
if (decode.equals(BYNARY[j])) {
hexNumber += HEX.charAt(j);
break;
}
}
}
return hexNumber;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
String binaryNumber = "";
if (hexNumber == "" || hexNumber == null) return binaryNumber;
if (hexNumber.equals(HEX)) return "";
int decimalNumber = 0;
// String binaryNumber = null;
for(int i = 0; i < hexNumber.length(); i++ ){
decimalNumber = 16*decimalNumber + HEX.indexOf(hexNumber.charAt(i));
}
while (decimalNumber != 0){
binaryNumber = (decimalNumber % 2) + binaryNumber ;
decimalNumber = decimalNumber /2;
hexNumber = String.valueOf(binaryNumber) + hexNumber;
}
return binaryNumber;
}
}