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) {
if (binaryNumber == "" || binaryNumber == null) {
return null;
} else {
if (binaryNumber.matches("^[01]+$")) {
while (binaryNumber.length() % 4 != 0) {
binaryNumber = "0" + binaryNumber;
}
String strhexnum = "";
int hexnum = 0;
int numsymhex = binaryNumber.length() / 4;
for (int j = 0, h = 0; h < numsymhex; j = j + 4, h++) {
for (int i = 0; i < 4; i++) {
int numsymbin = binaryNumber.length() - 1 - i - j;
int tempnum = Character.getNumericValue(binaryNumber.charAt(numsymbin));
hexnum = (int) (hexnum + tempnum * Math.pow(2, j + i));
}
hexnum = (int) (hexnum / Math.pow(16, h));
if (hexnum <= 9) {
strhexnum = hexnum + strhexnum;
} else if (hexnum == 10) {
strhexnum = "a" + strhexnum;
} else if (hexnum == 11) {
strhexnum = "b" + strhexnum;
} else if (hexnum == 12) {
strhexnum = "c" + strhexnum;
} else if (hexnum == 13) {
strhexnum = "d" + strhexnum;
} else if (hexnum == 14) {
strhexnum = "e" + strhexnum;
} else if (hexnum == 15) {
strhexnum = "f" + strhexnum;
} else
return "ошибка";
}
return strhexnum;
} else return null;
}
}
public static String toBinary(String hexNumber) {
String binnum = "";
if (hexNumber == null) {
return null;
}
for (int i = 0; i < hexNumber.length(); i++) {
if (hexNumber.charAt(hexNumber.length() - 1 - i) == '0') {
binnum = "0000"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '1') {
binnum = "0001"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '2') {
binnum = "0010"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '3') {
binnum = "0011"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '4') {
binnum = "0100"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '5') {
binnum = "0101"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '6') {
binnum = "0110"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '7') {
binnum = "0111" + binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '8') {
binnum = "1000"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '9') {
binnum = "1001"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == 'a') {
binnum = "1010"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == 'b') {
binnum = "1011"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == 'c') {
binnum = "1100"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == 'd') {
binnum = "1101"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == 'e') {
binnum = "1110"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == 'f') {
binnum = "1111"+ binnum;
} else
return null;
}return binnum;
}
}
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) {
if (binaryNumber == "" || binaryNumber == null) {
return null;
} else {
if (binaryNumber.matches("^[01]+$")) {
while (binaryNumber.length() % 4 != 0) {
binaryNumber = "0" + binaryNumber;
}
String strhexnum = "";
int hexnum = 0;
int numsymhex = binaryNumber.length() / 4;
for (int j = 0, h = 0; h < numsymhex; j = j + 4, h++) {
for (int i = 0; i < 4; i++) {
int numsymbin = binaryNumber.length() - 1 - i - j;
int tempnum = Character.getNumericValue(binaryNumber.charAt(numsymbin));
hexnum = (int) (hexnum + tempnum * Math.pow(2, j + i));
}
hexnum = (int) (hexnum / Math.pow(16, h));
if (hexnum <= 9) {
strhexnum = hexnum + strhexnum;
} else if (hexnum == 10) {
strhexnum = "a" + strhexnum;
} else if (hexnum == 11) {
strhexnum = "b" + strhexnum;
} else if (hexnum == 12) {
strhexnum = "c" + strhexnum;
} else if (hexnum == 13) {
strhexnum = "d" + strhexnum;
} else if (hexnum == 14) {
strhexnum = "e" + strhexnum;
} else if (hexnum == 15) {
strhexnum = "f" + strhexnum;
} else
return "ошибка";
}
return strhexnum;
} else return null;
}
}
public static String toBinary(String hexNumber) {
String binnum = "";
if (hexNumber == null) {
return null;
}
for (int i = 0; i < hexNumber.length(); i++) {
if (hexNumber.charAt(hexNumber.length() - 1 - i) == '0') {
binnum = "0000"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '1') {
binnum = "0001"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '2') {
binnum = "0010"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '3') {
binnum = "0011"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '4') {
binnum = "0100"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '5') {
binnum = "0101"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '6') {
binnum = "0110"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '7') {
binnum = "0111" + binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '8') {
binnum = "1000"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == '9') {
binnum = "1001"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == 'a') {
binnum = "1010"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == 'b') {
binnum = "1011"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == 'c') {
binnum = "1100"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == 'd') {
binnum = "1101"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == 'e') {
binnum = "1110"+ binnum;
} else if (hexNumber.charAt(hexNumber.length() - 1 - i) == 'f') {
binnum = "1111"+ binnum;
} else
return null;
}return binnum;
}
}