Перевод IP в число и обратно

Как известно, при переводе IP-адреса в число, мы экономим ресурсы памяти, так как IP-адрес в четвертой версии — это 32-х битовое число и запись вида 192.168.1.1 будет занимать 15 байт, а в числовом виде всего 4 байта. Удобной формой записи (IPv4) является запись в виде четырёх десятичных чисел значением от 0 до 255, разделённых точками, например, 192.0.2.60. Но для хранения его в базе данных лучше перевести его в десятичное целое число. Например 192.168.1.1 — это одно и то же, что 3232235777.

В PHP есть встроенная функция перевода из IP в число — ip2long, но по умолчанию она переводит в отрицательные числа.

Ввиду того, что PHP тип integer является знаковым, и на 32-битных системах большое количество IP адресов будет представлено в виде отрицательных чисел, необходимо использовать «%u» в функции sprintf() или printf() для получения IP адреса в строковом беззнаковом виде.

Теперь рассмотрим функцию перевода из числа обратно в IP-адрес, на примере MSsql.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *