Помогите, ткните носом. Уже 3 дня не могу решить. Спасибо.
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
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 HEX = "0123456789abcdef";
int dn = 0;
int index = 0;
int value = 0;
if ((binaryNumber == null) || (binaryNumber.equals(""))) {
return "";
}
for (int i = 0; i < binaryNumber.length(); i++ ) {
if (binaryNumber.charAt(i) != '0' && binaryNumber.charAt(i) != '1') {
return "";
}
}
for (int i = 0; i < binaryNumber.length(); i++) {
index = binaryNumber.length() - 1 - i;
value = Character.getNumericValue(binaryNumber.charAt(index));
dn += value * Math.pow(2, i);
}
String hexNumber = "";
while (dn != 0) {
hexNumber = HEX.charAt(dn % 16) + hexNumber;
dn = dn / 16;
}
return hexNumber;
}
public static String toBinary(String hexNumber) {
int dn = 0;
String HEX = "0123456789abcdef";
if ((hexNumber == null) || (hexNumber.equals(""))) {
return "";
}
int count = 0;
for (int i = 0; i < hexNumber.length(); i++) {
for (int j = 0; j < HEX.length(); j++) {
if (hexNumber.charAt(i) == HEX.charAt(j)) {
count += 1;
break;
}
}
}
if (count != hexNumber.length()) {
return "";
}
for (int i = 0; i < hexNumber.length(); i++) {
dn = 16 * dn + HEX.indexOf(hexNumber.charAt(i));
}
int i = 0;
String binary = new String();
while(dn != 0) {
binary = (dn % 2) + binary;
dn = (dn / 2);
i++;
}
return binary;
}
}