实战-php实现ip地址转为点分二进制

php不使用进制转换内置函数实现十进制ip地址转换为二进制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public function Ip()
{
$ip='192.168.1.1';
$result=$this->binIp($ip);
echo $result;
}



public function binIp($ip)
{
//字符串分割 数组便于处理
$arr = explode('.',$ip);
$arr1 = [];
foreach ($arr as $k){
$arr1[]=$this->dec2bin($k);
}
//数组转为字符串
$ip = implode('.',$arr1);
return $ip;

}

/**
* Notes: 十进制转为二进制
* User: suzijia
* Date: 2020/5/19
* Time: 2:45 PM
* @param $dec
* @return string
*/
function dec2bin ($dec) {
$flag = array();
//把一个十进制除二取余数,依次放到数组之中
while ($dec != 0) {
array_push($flag,$dec%2);
$dec = (int)($dec/2);
}
//依次取出数组的最后一个拼接成一个字符串
$binstr = '';
while (!empty($flag)) {
$binstr .= array_pop($flag);
}
return $binstr;
}