Можно ли преобразовывать char в String прибавлением к char пустой строки "" ? Код вроде работает.
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 hexNumber = "";
if (binaryNumber == null || binaryNumber.equals("")) {
return hexNumber;
}
int a = binaryNumber.length() % 4;
if (a == 1) {
binaryNumber = "000" + binaryNumber;
} else if (a == 2) {
binaryNumber = "00" + binaryNumber;
} else if (a == 3) {
binaryNumber = "0" + binaryNumber;
}
for (int i = 0; i < binaryNumber.length(); i = i + 4) {
String hexNumber4 = "";
for (int j = i; j < i + 4; j++) {
String value = "" + binaryNumber.charAt(j);
if (!(value).equals("1") & !(value).equals("0")) {
return "";
}
hexNumber4 = hexNumber4 + value;
}
if (hexNumber4.equals("0000")) {
hexNumber4 = "0";
} else if (hexNumber4.equals("0001")) {
hexNumber4 = "1";
} else if (hexNumber4.equals("0010")) {
hexNumber4 = "2";
} else if (hexNumber4.equals("0011")) {
hexNumber4 = "3";
} else if (hexNumber4.equals("0100")) {
hexNumber4 = "4";
} else if (hexNumber4.equals("0101")) {
hexNumber4 = "5";
} else if (hexNumber4.equals("0110")) {
hexNumber4 = "6";
} else if (hexNumber4.equals("0111")) {
hexNumber4 = "7";
} else if (hexNumber4.equals("1000")) {
hexNumber4 = "8";
} else if (hexNumber4.equals("1001")) {
hexNumber4 = "9";
} else if (hexNumber4.equals("1010")) {
hexNumber4 = "a";
} else if (hexNumber4.equals("1011")) {
hexNumber4 = "b";
} else if (hexNumber4.equals("1100")) {
hexNumber4 = "c";
} else if (hexNumber4.equals("1101")) {
hexNumber4 = "d";
} else if (hexNumber4.equals("1110")) {
hexNumber4 = "e";
} else if (hexNumber4.equals("1111")) {
hexNumber4 = "f";
}
hexNumber = hexNumber + hexNumber4;
}
return hexNumber;
}
public static String toBinary(String hexNumber) {
String binaryNumber = "";
if (hexNumber == null || hexNumber.equals("")) {
return binaryNumber;
}
for (int i = 0; i < hexNumber.length(); i++) {
String value = "" + hexNumber.charAt(i);
if (value.equals("0")) {
value = "0000";
} else if (value.equals("1")) {
value = "0001";
} else if (value.equals("2")) {
value = "0010";
} else if (value.equals("3")) {
value = "0011";
} else if (value.equals("4")) {
value = "0100";
} else if (value.equals("5")) {
value = "0101";
} else if (value.equals("6")) {
value = "0110";
} else if (value.equals("7")) {
value = "0111";
} else if (value.equals("8")) {
value = "1000";
} else if (value.equals("9")) {
value = "1001";
} else if (value.equals("a")) {
value = "1010";
} else if (value.equals("b")) {
value = "1011";
} else if (value.equals("c")) {
value = "1100";
} else if (value.equals("d")) {
value = "1101";
} else if (value.equals("e")) {
value = "1110";
} else if (value.equals("f")) {
value = "1111";
}
else {
return "";
}
binaryNumber = binaryNumber + value;
}
return binaryNumber;
}
}