功能dec2string(元十进制,为基地) { 全局$错误; $字符串= NULL; 美元基数=(INT)基地; ($基地<2 | | $基地> 36 | | $基地== 10){ 回声“基地必须在范围2-9或11-36”; 退出; } $字符集= '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $字符集= SUBSTR($字符集,0元,基地); (!额日格('(^[ 0-9] {1,16 }$)',修剪(十进制))){ 错误['dec_input“] ='值必须是一个正整数”; 返回false; } 做{ 其余= bcmod(十进制,基地); $字符= SUBSTR($字符集,美元的剩余部分,1); / /从数组中得到的CHAR =“$字符字符串”/ /前置输出字符串美元 美元小数= bcdiv(bcsub(十进制,余下部分),为基地); 而(十进制> 0); 返回为字符串; } 功能string2dec($字符串,元基) { 全局$错误; 十进制= 0美元; 美元基数=(INT)基地; ($基地<2 | | $基地> 36 | | $基地== 10){ 必须在范围2-9或11-36“回声”基地; 退出; } $字符集= '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $字符集= SUBSTR($字符集,0元,基地); $字符串= TRIM($字符串); (空字符串)($){ 错误[] ='输入字符串为空“; 返回false; } 做{ $字符= SUBSTR(字符串,0,1); / /提取的主角 字符串= SUBSTR(字符串,1美元); / /下拉主角 $ POS = strpos($字符集,字符美元); / /获取在$字符集偏移 (POS === FALSE){ 错误[] =“非法字符(元字符)输入字符串”; 返回false; } 十进制= bcadd(bcmul(十进制,基地),$ POS); }而($字符串<> NULL); 返回小数; } 功能垫($ STR,NUM) { 返回str_repeat(“0”,$ NUM - strlen的(STR))$ STR。 } / /主 (使用isset($ _GET [“提交”])) { $ IP = 0; (使用isset($ _GET [“INT”])&&$ _GET [“INT”] =“) { $ IP = $ _GET [“INT”]; } 如果(isset($ _GET [“点”])&&$ _GET [“点”] =“”) { IP = ip2long($ _GET [“点”]); } 其他 { $ IP = 0; } uns_ip =($ IP> 0 $ IP:?为0xffffffff + $ IP + 1)+ 0; IF(($ uns_ip&0 × 80000000)== 0) { $ MASK = 0xff000000; } 否则,如果(($ uns_ip和0xC0000000的)== -2147483648) { $ MASK = 0xFFFF0000地址; } 否则,如果(($ uns_ip和0xE0000000)== -1073741824) { $ MASK = 0xffffff00; } 其他 { $ MASK =“”; } dot_ip = long2ip(元uns_ip); 美元hex_ip = dec2string(uns_ip美元,16); $ hex_ip =“0X”垫(hex_ip美元,8); 美元oct_ip = dec2string(uns_ip美元,8); $ oct_ip =“0”垫(oct_ip $ 16); 美元bin_ip = dec2string(uns_ip美元,2); bin_ip =垫(bin_ip $ 32); ?> 转换结果 | 点符号 | =$dot_ip?> |
|---|
| 十进制数 | =$ip?> |
|---|
| 无符号十进制数 | =$uns_ip?> |
|---|
| 十六进制数 | =$hex_ip?> |
|---|
| 二进制数 | =$bin_ip?> |
|---|
| 八进制数 | =$oct_ip?> |
|---|
| 自然掩码 | echo "$mask (".long2ip($mask).") " ?> |
|---|
} ?> |