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) {
byte x,y, z;
byte [] adress = new byte[4];
for(int i=0; i<4; i++){
x = ip[i];
y = mask[i];
z = (byte)x &(byte)y; - //ПОЧЕМУ НЕ РАБОТАЕТ? Интерпритатор говорит, что "видит" int вместо byte
adress[i] = (byte) z;
}
return adress;
}
Di
38 уровень
Не понимаю логику конвертации - пожалуйста, поясните
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Anonymous #1384518Expert
7 октября 2018, 00:32
Побитовые операции приводят к типу int
Поэтому всё выражение справа от z= надо привести к этому типу,
а не только x и y
Тут есть полезное для понимания.
0
Di
7 октября 2018, 05:00
Круто! Спасибо, док)))
0
Di
7 октября 2018, 22:41
Ильяс, подскажите, а вы случайно не видели хорошей статьи про форматирование строк? Очень хочется разобраться в этой теме.
0
Anonymous #1384518Expert
8 октября 2018, 20:39
О чём конкретно речь? об этом?
0
Di
8 октября 2018, 21:55
Спасибо! Это ссылку я тоже находил; просто, захотелось поглубже погрузиться в тему.
0
Di
6 октября 2018, 22:00
Почему элементы массивов ip и mask надо перебирать как int, если в массиве хранятся byte?
0