Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Скрипт перевода в двоичную систему

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
galsik09
Отправлено: 08 Июля, 2015 - 12:59:24
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




В php можно ли написать скрипт перевода числа в двоичную систему? пример если можно
Пример: у меня есть число 5.100.192.0/21 его надо перевести в двоичную систему чтоб получилась 21 цифра как указано после слеша, число должно получится 000001010110010011000

если 31.130.200.0/24 то должно получится 000111111000001011001000
 
 Top
Мелкий Супермодератор
Отправлено: 08 Июля, 2015 - 13:05:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Это не число, а маска сети.
ip2long, base_convert да пары функций обработки строк будет достаточно.


-----
PostgreSQL DBA
 
 Top
galsik09
Отправлено: 08 Июля, 2015 - 13:11:09
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Мелкий пишет:
Это не число, а маска сети.
ip2long, base_convert да пара функций обработки строк будет достаточно.


а вообще пример скрипта можно где найти? и скрипт будут отличаться от зависимости столько цифр надо в двоичной ситеме, допустим
46.56.64.0/19
46.56.96.0/19
46.56.128.0/17
46.56.128.0/21
46.175.168.0/21
46.182.48.0/22
46.182.52.0/22
где-то 19 где 17 и 21
 
 Top
galsik09
Отправлено: 08 Июля, 2015 - 16:38:00
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




давайте так есть в php decbin которая переводит с десятичной в двоичную
<?php
echo decbin(12);
?>

легко и просто, а с ip типа 5.100.192.0 даже не знаю что и делать
 
 Top
Мелкий Супермодератор
Отправлено: 08 Июля, 2015 - 16:40:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Про ip2long я для кого написал?


-----
PostgreSQL DBA
 
 Top
galsik09
Отправлено: 08 Июля, 2015 - 17:12:33
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Мелкий пишет:
Про ip2long я для кого написал?


Ок я сделал так

да и результат получился 101011001001100000000000000

Но это не правильное преобразование, должен быть вот такой результат 00000101011001001100000000000000 а это правильный. Можно даже проверить здесь infocisco.ru/calculator_mask.php
(Добавление)
Хотя впринципи правильно просто нули с начало не показало
 
 Top
Мелкий Супермодератор
Отправлено: 08 Июля, 2015 - 17:16:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Мелкий пишет:
да пары функций обработки строк


Мне так по кусочку и цитировать самого себя?


-----
PostgreSQL DBA
 
 Top
galsik09
Отправлено: 09 Июля, 2015 - 12:07:44
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




есть еще такой вопрос вот скрипт который преобразовывает ip в 2сс:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $mask='5.100.192.0';
  4. $maskArr = explode('.',$mask);
  5. $binmask = sprintf( "%08d", decbin($maskArr [0])).sprintf( "%08d", decbin($maskArr [1])).sprintf( "%08d", decbin($maskArr [2])).sprintf( "%08d", decbin($maskArr [3]));
  6. $binmask = substr($binmask,0,21);
  7. print $binmask;
  8. ?>

он работает по определенному ip который задаешь в переменной $mask. А мне надо чтоб скрипт открывал файл в котором записаны ip адреса в виде:
CODE (htmlphp):
скопировать код в буфер обмена
  1. 5.100.192.0/21
  2. 5.100.200.0/21
  3. 5.100.208.0/21
  4. 5.100.216.0/21
  5. 31.24.88.0/21
  6. 31.130.200.0/24
  7. 31.130.201.0/24
  8. 31.130.202.0/24
  9. 31.130.203.0/24
  10. 31.130.204.0/24


что бы он открывал файл читал по строкам и каждый ip адрес преобразовал в 2сс до определенного знака, это то что после слеша, и записывал полученные данные в другой файл в виде:
CODE (htmlphp):
скопировать код в буфер обмена
  1. 000001010110010011000
  2. 000001010110010011001
  3. 000001010110010011010
  4. 000001010110010011011
  5. 000111110001100001011
  6. 000111111000001011001000
  7. 000111111000001011001001
  8. 000111111000001011001010
  9. 000111111000001011001011
  10. 000111111000001011001100
 
 Top
Мелкий Супермодератор
Отправлено: 09 Июля, 2015 - 12:18:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. file_put_contents('output', join(PHP_EOL, array_map(function ($sInput) {
  3.     list($ip, $mask) = explode('/', trim($sInput));
  4.     return substr(str_pad(decbin(ip2long($ip)), 32, 0, STR_PAD_LEFT), 0, $mask);
  5.     }, file('input', FILE_SKIP_EMPTY_LINES))));
  6.  


-----
PostgreSQL DBA
 
 Top
galsik09
Отправлено: 09 Июля, 2015 - 13:05:07
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




а можно объяснить как он работает. Где открываемый файл, где преобразовывает в 2сс, куда выходит результат.
И этот скрипт новый или его надо в мой дописать?
Извини за глупые вопросы только обущаюсь php

(Отредактировано автором: 09 Июля, 2015 - 15:19:10)

 
 Top
esterio
Отправлено: 09 Июля, 2015 - 13:42:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Мелкий пишет:
file('input', FILE_SKIP_EMPTY_LINES))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB