Доброго времени.
Что не так...?
Помогите разобраться.
public static String toHex(String binaryNumber) {
String HexNumber = ""; // создаём пустой HexNumber;
String[] baz = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"}; // создаём массив от 1 до 16 в двоичном коде;
String She = "0123456789abcdef"; // создаём стринговый набор символов шестнадцатеричной системы;
/*
проверяем входящий binaryNumber на "пустую строку" и "null"
*/
if (binaryNumber==null || binaryNumber.equals(""))
return HexNumber;
/*
проверяем входящий binaryNumber на содержание только "0" и "1"
*/
for (int i=0; i < binaryNumber.length(); i++) {
if (binaryNumber.charAt(i) != 0 && binaryNumber.charAt(i) != 1)
return HexNumber; }
/*
проверяем входящий binaryNumber на кратность 4-м длины строки
*/
while (binaryNumber.length()%4 != 0) {
binaryNumber = "0" + binaryNumber;
}
/*
берём 4 символа из binaryNumber и присваиваем их переменной element. Сравниваем element c массивом двоичных кодов от 1 до 16; Заполняем HexNumber;
*/
for (int i=0; i <= binaryNumber.length(); i=i+4) {
String element = "";
element = binaryNumber.substring(i,i+4);
for (int z=0; z < baz.length; z++) {
if (element.equals(baz[z]))
HexNumber = HexNumber + She.charAt(z);
}
}
return HexNumber;
}
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 = "";
String[] baz = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
String She = "0123456789abcdef";
if (binaryNumber==null || binaryNumber.equals(""))
return HexNumber;
for (int i=0; i < binaryNumber.length(); i++) {
if (binaryNumber.charAt(i) != 0 && binaryNumber.charAt(i) != 1)
return HexNumber; }
while (binaryNumber.length()%4 != 0) {
binaryNumber = "0" + binaryNumber;
}
for (int i=0; i <= binaryNumber.length(); i=i+4) {
String element = "";
element = binaryNumber.substring(i,i+4);
for (int z=0; z < baz.length; z++) {
if (element.equals(baz[z]))
HexNumber = HexNumber + She.charAt(z);
}
}
return HexNumber;
}
public static String toBinary(String hexNumber) {
String BinaryNumber = "";
String[] baz = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
String prov = "0123456789abcdef";
if (hexNumber==null || hexNumber.equals(""))
return BinaryNumber;
for (int i=0; i < hexNumber.length(); i++) {
int z = 0;
char k = hexNumber.charAt(i);
for (int j=0; j < prov.length(); j++) {
char l = prov.charAt(j);
if (k == l) {
z = z + 1;
break;
}
}
if (z == 0)
return BinaryNumber;
}
for (int i=0; i<hexNumber.length(); i++) {
for (int j=0; j<prov.length(); j++) {
if (hexNumber.charAt(i)==prov.charAt(j))
BinaryNumber = BinaryNumber + baz[j];
}
}
return BinaryNumber;
}
}