package com.javarush.task.pro.task09.task0908; import java.util.regex.Pattern; public class Solution { private static final String [] fourBitsBinaryArray = {"0000","0001","0010","0011","0100","0101","0110","0111", "1000","1001","1010", "1011","1100","1101","1110","1111"}; private static final String [] hexSymbolArray = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"}; public static void main(String[] args) { String binaryNumber = "100111010000"; if (binaryNumber.length()%4==1) binaryNumber = "000" + binaryNumber; else if (binaryNumber.length()%4==2) binaryNumber = "00" + binaryNumber; else if (binaryNumber.length()%4==3) binaryNumber = "0" + binaryNumber; System.out.println("Двоичное число " + binaryNumber + " равно шестнадцатеричному числу " + toHex(binaryNumber)); String hexNumber = "9d0"; System.out.println("Шестнадцатеричное число " + hexNumber + " равно двоичному числу " + toBinary(hexNumber)); } public static String toHex(String binaryNumber) { if (binaryNumber==null) return ""; if((!Pattern.matches("[0-1]+", binaryNumber))) return ""; String hexNumber = ""; String buffer = ""; for (int i = 0; i < binaryNumber.length(); i++) { buffer = binaryNumber.charAt(binaryNumber.length() - i- 1) + buffer; if (buffer.length()==4) for (int j = 0; j < 16; j++) { if(buffer.equals(fourBitsBinaryArray[j])) { hexNumber = hexSymbolArray[j] + hexNumber; buffer = ""; break; } } } return hexNumber; } public static String toBinary(String hexNumber) { if (hexNumber==null) return ""; if((!Pattern.matches("[0-f]+", hexNumber))) return ""; String binary = ""; String buffer = ""; for (int i = 0; i < hexNumber.length(); i++) { buffer = hexNumber.charAt(hexNumber.length() - i- 1) + buffer; for (int j = 0; j < 16; j++) { if(buffer.equals(hexSymbolArray[j])) { binary = fourBitsBinaryArray[j] + binary; buffer = ""; break; } } } return binary; } }