从DDN转换为二进制时的IP地址长度错误

时间:2015-02-01 16:40:32

标签: php

这是我用来将IP地址从Dotted Decimal Notation转换为binary:

base_convert(bin2hex(inet_pton($ip_address),16,2)

这似乎适用于大多数 IP地址,但其中一些会导致较小的输出字符串(即小于32个字符)。例如,这是两个输出:

10.77.55.3
172.30.99.4

成为

1010010011010011011100000011
10101100000111100110001100000100

我希望转换后所有输入IP地址长度为32个字符。我怎样才能确保发生这种情况?

1 个答案:

答案 0 :(得分:2)

它正在排除领先的零点。您可以通过str_pad重新添加它们。

str_pad(base_convert(bin2hex(inet_pton($ip_address),16,2)), 32, '0', STR_PAD_LEFT)

或者为了减少函数调用并避免使用base_convert(),你可以像Michael建议的那样:

str_pad(decbin(ip2long('10.77.55.3')), 32, '0', STR_PAD_LEFT);