Доброй ночи. Подскажите, пожалуйста почему бесконечность? И как строку перевести в байт не потеряв знаки??? У меня 10101000 а если так
byte [] zima=new byte[mishka.size()];
for (int i = 0; i < mishka.size(); i++) {
int w=Integer.parseInt(mishka.get(i));
zima[i]=(byte) w;
}
то будет 00001000
package com.javarush.task.task21.task2101;
/*
Определяем адрес сети
*/
import java.text.DecimalFormat;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) {
byte[] ip = new byte[]{(byte) 192, (byte) 168, 1, 2};
byte[] mask = new byte[]{(byte) 255, (byte) 255, (byte) 254, 0};
byte[] netAddress = getNetAddress(ip, mask);
print(ip); //11000000 10101000 00000001 00000010
print(mask); //11111111 11111111 11111110 00000000
print(netAddress); //11000000 10101000 00000000 00000000
}
public static byte[] getNetAddress(byte[] ip, byte[] mask) {
String enot = ""; // это все для добавления нулей
String belka = "";
String enot2 = "";
String belka2 = "";
StringBuilder stringBuilder1 = new StringBuilder();
StringBuilder stringBuilder2 = new StringBuilder();
StringBuilder stringBuilder3 = new StringBuilder();
StringBuilder stringBuilder4 = new StringBuilder();
ArrayList<String> belkaGT = new ArrayList<>();
ArrayList<String> belkaBoss = new ArrayList<>();
ArrayList<String> mishka = new ArrayList<>();
for (int i = 0; i < ip.length; i++) {
boolean m = true;
boolean m2 = true;
String ss = Long.toBinaryString((byte) mask[i]);
String s = Long.toBinaryString((byte) ip[i]);
if (s.length() - 1 >= 7) {
stringBuilder1.append(s);
enot = stringBuilder1.reverse().substring(0, 8);
stringBuilder1.delete(0, 8);
belka = stringBuilder2.append(enot).reverse().toString();
belkaGT.add(belka);
stringBuilder2.delete(0, 8);
}else if (s.length() - 1 < 8) {
int zina = 8 - s.length() - 1;
while (m) {
s = 0 + s;
zina--;
if (zina == 0) {
m = false;
}
}
s = 0 + s;
belkaGT.add(s);
}
if (ss.length() - 1 >= 7) {
stringBuilder3.append(ss);
enot2 = stringBuilder3.reverse().substring(0, 8);
stringBuilder3.delete(0, 8);
belka2 = stringBuilder4.append(enot2).reverse().toString();
stringBuilder4.delete(0, 8);
belkaBoss.add(belka2);
} else if (ss.length() - 1 < 8) {
int zena = 8 - ss.length() - 1;
while (m2) {
ss = 0 + ss;
zena--;
if (zena == 0) {
m2 = false;
}
}
ss=0+ss;
belkaBoss.add(ss);
}
}
// if (belkaGT.size() >= belkaBoss.size()) {
for (int i = 0; i < belkaGT.size(); i++) { //это и сравнение
String s="";
for (int j = 0; j < belkaGT.get(i).length(); j++) {
if(belkaGT.get(i).charAt(j)=='1'&&belkaBoss.get(i).charAt(j)=='0')
{
s=s+belkaBoss.get(i).charAt(j);
}
else
{
s=s+belkaGT.get(i).charAt(j);
}
}
mishka.add(s);
}
// }
byte [] zima=new byte[mishka.size()];
for (int i = 0; i < mishka.size(); i++) {
int w=Integer.parseInt(mishka.get(i));
zima[i]=(byte) w;
}
return zima;
}
public static void print(byte[] bytes) {
String enot="";
String belka="";
StringBuilder stringBuilder=new StringBuilder();
StringBuilder stringBuilder2=new StringBuilder();
ArrayList<String> belkaGT=new ArrayList<>();
for (int i = 0; i < bytes.length; i++) {
boolean m=true;
String ss = Long.toBinaryString((byte) bytes[i]);
if (ss.length() - 1 >= 7) {
stringBuilder.append(ss);
enot = stringBuilder.reverse().substring(0, 8);
stringBuilder.delete(0, 8);
belka = stringBuilder2.append(enot).reverse().toString();
belkaGT.add(belka);
stringBuilder2.delete(0, 8);
} else if (ss.length() - 1 < 8) {
int zina = 8 - ss.length() - 1;
while (m) {
ss = 0 + ss;
zina--;
if (zina == 0) {
m = false;
}
}
ss = 0 + ss;
belkaGT.add(ss);
}
}
for (Object o :belkaGT) {
System.out.println(o);
}
}
}