Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O ip2long() no PHP é igual à função INET_ATON() no MySQL?


Eles são quase exatamente iguais. ip2long às vezes retorna um valor negativo porque o PHP usa números com sinal para avaliação, enquanto o MySQL usa sem sinal.

Ambos são avaliados como x*(2^24) + y*(2^16) + z*(2^8) + w*(2^0) , mas em PHP, devido ao longo ser assinado, mostrará valores negativos para determinados endereços IP.
For signed long, the range is 
(2^31) - 1 = −2,147,483,648 to +2,147,483,647

Portanto, os endereços enquanto são traduzidos para mais de +2.147.483.647 serão agrupados e fornecerão valores negativos.
ip2long("254.254.254.254"); // -16843010

Este link descreve isso em detalhes.