в чем загвоздка, кто шарит?)
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
private static final String HEX = "0123456789abcdef";
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) {
if (binaryNumber == null || !binaryNumber.matches("[01]+"))
return "";
int decimal = toDecimal(binaryNumber);
return toHex(decimal);
}
public static String toBinary(String hexNumber) {
if (hexNumber == null || !hexNumber.matches("[0123456789abcdef]+")) {
return "";
}
if (hexNumber == "0") {
return "0";
}
int decimal = hexToDecimal(hexNumber);
return hexToBinary(decimal);
}
public static int toDecimal(String binaryNumber) {
int decimalNumber = 0;
for (int i = 0; i < binaryNumber.length(); i++) {
int index = binaryNumber.length() - 1 - i;
char digit = binaryNumber.charAt(index);
int bit = Character.getNumericValue(digit);
decimalNumber = decimalNumber + bit * (int) Math.pow(2, i);
}
return decimalNumber;
}
public static String toHex(int decimalNumber) {
StringBuilder hexString = new StringBuilder();
while (decimalNumber != 0) {
int index = decimalNumber % 16;
hexString.insert(0, HEX.charAt(index));
decimalNumber /= 16;
}
return hexString.toString();
}
public static int hexToDecimal(String hexNumber) {
int decimalNumber = 0;
for (int i = 0; i < hexNumber.length(); i++) {
int index = hexNumber.length() - 1 - i;
char hex = hexNumber.charAt(index);
decimalNumber += HEX.indexOf(hex) * (int) Math.pow(16, i);
}
return decimalNumber;
}
public static String hexToBinary(int decimalNumber) {
StringBuilder binaryBuilder = new StringBuilder();
while (decimalNumber != 0) {
binaryBuilder.append(decimalNumber % 2);
decimalNumber /= 2;
}
return binaryBuilder.reverse().toString();
}
}