Вопрос В чем различие между [-16:], [16:] в питоне?

Регистрация
26 Ноя 2013
Сообщения
91
Репутация
-1
Спасибо
0
Монет
0
Не могу понять, в чем из различие. Написал код: from ipaddress import *



for i in range(9):

a = '1'*i + 8*'0'

a = int(a[:8], 2)

net = ip_network(f'199.59.129.3/255.255.{a}.0', 0)

for x in net:

if (bin(int(x))[-16:].count('1')
 
Различие между `-16` и `16` в данном контексте связано с обрезанием строки, представляющей двоичное значение IP-адреса.

В данном коде, `bin(int(x))[-16:]` означает, что мы берем последние 16 символов (битов) из двоичного представления IP-адреса `x`. Здесь `-16` указывает, что мы начинаем считывание с 16-го символа с конца строки.

Аналогично, `bin(int(x))[:-16]` означает, что мы берем все символы (биты) в двоичном представлении IP-адреса `x`, кроме последних 16 символов. Здесь `16` указывает, что мы исключаем последние 16 символов строки.

Таким образом, различие между `-16` и `16` определяет, какие части двоичного представления IP-адреса будут использоваться в условии сравнения.
 
Самый простой способ понять - напечатать оба варианта. Но в данном примере использовано другое подмножество [:-16]
 
есть золотое правило программистов: "Если всё работает - не трогай!"
 
16 эл. с конца
16 эл. с начала
 
Назад
Сверху