这是我用来将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个字符。我怎样才能确保发生这种情况?
答案 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);