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)

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

комментариев 8 to “IP адрес в двоичный формат…”

  1. Vadim Says:

    System.Convert.ToString(value, toBase)?

    хотя биты тоже неплохо🙂

  2. Xaegr Says:

    2 Vadim: Сорри, у меня тут д.р. у сотрудницы, я может туплю, но что подставлять в toBase?🙂 а то там оверлоадов ужас сколько🙂
    Value — это будет ведь «192.168.1.1»?🙂

  3. Vadim Says:

    не🙂
    value — числа 192, 168, 1, 1 на выбор🙂
    toBase должно быть 2!

    позволит избавиться от возни с битами

  4. Vadim Says:

    не факт, что короче получится, конечно🙂 но проще

  5. Xaegr Says:

    Вот чувствовал я что в .Net уже есть что то мне в помощь🙂 Спасибо!🙂
    Хотя не сильно короче вышло…
    («192.168.1.1».split(«.»)|%{[System.Convert]::ToString($_,2).PadLeft(8,»0″)}) -join «»

  6. Xaegr Says:

    Вот что вытворил в результате🙂
    [convert]::ToString(([net.ipaddress]»192.168.1.1″).address,2)

  7. Ugnich Anton Says:

    А зачем преобразовывать в строку? Где такое может понадобится?
    Обычно адрес переводят в 4 байта, чтобы места при хранении меньше занимало: IP-адрес = 4 байт, и ни битом больше!

  8. Xaegr Says:

    2 Ugnich Anton: Я же написал в начале — «маньякам скучно»😉 Мне хотелось именно посмотреть на биты🙂


Обсуждение закрыто.

%d такие блоггеры, как: