IP адрес в двоичный формат…

… или что бывает когда маньякам скучно :)

Преобразовываем IP адрес в строчку битов, одной строчкой ;)

oneliner2

Или тоже самое, но в несколько строк, с пробелами и комментариями ;)

# Разделяем адрес на октеты ("192.168.1.1".split(".")| # Foreach-Object %{ # Помещаем текущий октет в переменную $o $o=$_; # for ($_ = 7; $_ -ge 0; $_ --) {... 7..0|%{ # Возводим 2 в степень текущего числа содержащегося в # переменной $_. Делаем binary and с текущим октетом, преобразуем в # [bool] (нули станут $false, а остальные числа - $true. Преобразуем в # [int] ($true становится 1, а $false - 0). [int][bool]($o -band [math]::pow(2,$_)) } # объединяем получившийся массив битов в строчку }) -join ""

Гложет подозрение что это делается сильно проще и короче :) Подскажите кто-нибудь пожалуйста ;)

UPD: Спасибо Вадиму, в результате получилось вполне адекватно и в 2 раза короче :)

[convert]::ToString(([net.ipaddress]”192.168.1.1″).address,2)

Вру, не то получается… ;)

Scripting Games: Advanced PowerShell – Event 9

Совсем простая задачка, надо было взять все слова из текстовика, и записать буквы каждого слова в обратном порядке, не меняя общего порядка слов.

 

SG9-Reverse.ps1
# Получаем содержимое файла alice.txt, разделяем его на слова по пробелам, и # передаем их в конвейер. ((Get-Content "c:\scripts\alice.txt") -split " " | # Для каждого слова ($_)... foreach { # ... берем все его символы начиная с последнего и заканчивая нулевым и # объединяем их снова в слово. $_[($_.length-1)..0] -join "" } # Соединяем получившийся массив слов с помощью пробелов. ) -join " "

Либо тоже самое, но в одну строчку :)

((gc c:\scripts\alice.txt)-split" "|%{$_[($_.length-1)..0]-join""})-join" "

Почти тоже самое от MoW ;) (но всё же короче! :) ) и от Per Østergaard с применением функционала .Net. Ну и Scripting Guys (блин, я тоже хочу научиться писать скрипты как они – по слогам :) )