2009-11-15 3 views

ответ

3

Точно так же вы делаете на любом другом языке

set n 24 
set mask [expr {~ 0 << (32 - $n)}] 
format "%d.%d.%d.%d" [expr {$mask >> 24 & 255}] [expr {$mask >> 16 & 255}] [expr {$mask >> 8 & 255}] [expr {$mask & 255}] 
+0

Спасибо. Что на самом деле устанавливает линия маски? – user211491

+0

Создает маску «бит», которая смещается вокруг, действительно работает с данными в виде битовой маски. –

+0

В связи с этим вопросом, как я могу добавить 1 к IP-адресу (пример: 192.168.1.0). У меня есть IP-адрес и маска подсети, и я пытаюсь получить первый действительный IP-адрес в диапазоне. Если я делаю логическое И между IP и подсетью, я получаю номер подсети. Мне нужно добавить 1 к номеру подсети, чтобы получить первый IP-адрес. – user211491

1

Конечно, это легко сделать в простом Tcl, но вы можете рассмотреть возможность использование ip пакета из Tcllib для IP-адресов преобразований, поскольку она обеспечивает множество функций удобства, которые делают его легко почти все, что вам нужно для IPv4 и IPv6-адресов.