注册会员   登录
代理IP知识问答
IP地址段表示方法批量转换的方法或工具有哪些?
提问时间:2016/11/29 9:14:00    楼主:未知网友   阅读量:31464
比如下面第一个 139.208.0.0/13 可以转换成 139.208.0.1-139.215.255.255
怎么把好多这样的地址批量转换

139.208.0.0/13
139.226.0.0/15
14.204.0.0/15
140.206.0.0/15
150.255.0.0/16
153.0.0.0/16
153.101.0.0/16
153.3.0.0/16
153.34.0.0/15
153.36.0.0/15
153.99.0.0/16
1楼(未知网友)

这个方法很好! 有办法实现逆向转换吗?
比如将:10.10.10.1-10.10.10.255 转换成 10.10.10.1/24
2楼(站大爷用户)

自己写一个就好了,还可以通过两个IP计算出包含这两个IP的最小范围。





CIDR Match



























IP1
IP2
CIDR




















CIDR
IP1
IP2




3楼(未知网友)

这种简单的问题就不要搬出脚本了吧,人家还要安装包,基本上,excel两个公式搞定。现在用手机不方便,回去了试试。
==============
本来想弄个excel的版本呢,后来一想完全没有必要,本身这样的工具真的太多了。随便一搜就是一大堆。所以问题的本身就在易用性上。因为我本人也有这样的需求。。。那么上述各位给的代码什么的肯定不好用对不对。因为我们这种小白级用户不可能为了这种事再安装其他的东西。经常换电脑什么的是吧,着实不方便。搜了一下在线转换的网页也相当多,找了一个比较好的是这个
子网掩码计算器,ip地址在线计算器,ip掩码计算工具,十进制转二进制
但是没网不就不能用了不是吗?
然后我就把核心的扒出来了,当然我附上了原始链接,毕竟代码不是自己写的,总是认为网上有的就用呗,没必要再花精力。so侵权什么的pm我删掉好了。
就这样用记事本存成ip.html什么的, 存在电脑随开随用。代码如下,复制到记事本改名ip.html就行。
=======================






子网掩码计算器,ip地址在线计算器,ip掩码计算工具,十进制转二进制






子网掩码计算器_ip地址在线计算器_ip掩

码计算工具_十进制转二进制






网络和IP地址计算器






网络和IP地址计算器


显示网络,广播,第一次和最后一个给定的网络地址:


IP/掩码位:



/




结果结果:





















可用地址:
掩码:




网络:




第一个可用:




最后可用:




广播:







在网络掩码“位格式”也被称为CIDR格式(CIDR=无类别域间路由选择)。









IP地址和网络转换器



IP地址和网络转换器


子网掩码转换器(对位点分十进制格式)






结果: /










子网掩码转换器(位点分十进制格式)



/


在线科学计算器
结果:
Dec 十进制:


Hex十六进制:








所需数量掩码地址转换器




需要地址的数量:



结果:
掩码: / dotted
dec. 掩码:

可用的地址数量:









点分十进制IP地址掩码转换二进制和十六进制







结果:
Bin 二进制:


Hex十六进制:








十六进制掩码转换点分十进制IP地址






结果:
点分十进制:


Bin二进制:
name=bits_3>





计算位补一个IP地址(逆)

name=ip_4> 结果:
name=invert_4>









掩码转换到网络可用地址的数量



掩码: /



结果:
可用地址的数量: 地址总数:

点分十进制格式:







IP组播地址范围



所有的多播地址可以很容易被认出,因为同位模式“1110”开始。

224.0.0.0 - 224.0.0.255知名多播地址,控制通道

224.0.1.0 - 238.255.255.255全球范围的(互联网宽)组播地址

239.0.0.0 - 239.255.255.255本地多播地址












4楼(未知网友)

不用装任何第三方软件(特指在人民群众热爱的Windows之下)的版本来啦
算法完全照抄 @波斯基

ip地址保存在 ip.txt里

@ECHO OFF
FOR /F "tokens=1,2,3,4,5 delims=./" %%a IN (ip.txt) DO CALL :SUB_PARSE %%a %%b %%c %%d %%e
GOTO :eof

:SUB_PARSE

SET /a v=( %1 "<<" 24 ) "|" ( %2 "<<" 16 ) "|" ( %3 "<<" 8 ) "|" %4
SET /a m=(-1) "<<" (32 - %5)
SET /a x=(v "&" m) + 1
SET /a y=v "|" ("~" m)
SET /a x1=((x ">>" 24) + 256) "&" 0x000000FF
SET /a x2=(((x "<<" 8) ">>" 24) + 256) "&" 0x000000FF
SET /a x3=(((x "<<" 16) ">>" 24) + 256) "&" 0x000000FF
SET /a x4=(((x "<<" 24) ">>" 24) + 256) "&" 0x000000FF
SET /a y1=((y ">>" 24) + 256) "&" 0x000000FF
SET /a y2=(((y "<<" 8) ">>" 24) + 256) "&" 0x000000FF
SET /a y3=(((y "<<" 16) ">>" 24) + 256) "&" 0x000000FF
SET /a y4=(((y "<<" 24) ">>" 24) + 256) "&" 0x000000FF
ECHO %x1%.%x2%.%x3%.%x4%-%y1%.%y2%.%y3%.%y4%

GOTO :eof
5楼(匿名用户)

想不通啊,想不通。同样是贴代码为什么有那么多人点反对呢?
歧视匿名用户啊。╮(╯_╰)╭
还是写的没有 perl 那么艺术啊。╮(╯﹏╰)╭
还是说我程序写错了啊 T_T
===分割线===
我也来凑个热闹

import sys

def ip_to_str(ip):
_ip = [None] * 4
_ip[0] = (ip & 0xff000000) >> 24
_ip[1] = (ip & 0x00ff0000) >> 16
_ip[2] = (ip & 0x0000ff00) >> 8
_ip[3] = (ip & 0x000000ff)

return '.'.join([str(i) for i in _ip])


def convert_to_seg(ip):
ip, mask_len = ip.split('/')
ip = sum([int(part_ip)*256**(3-i)
for i, part_ip in enumerate(ip.split('.'))])

mask_len = int(mask_len)

low_mask = 0xffffffff << (32-mask_len)
low_ip = ip_to_str((ip & low_mask)+1)

high_mask = 0xffffffff >> mask_len
high_ip = ip_to_str(ip | high_mask)

return '-'.join((low_ip, high_ip))


if __name__ == '__main__':
filename = sys.argv(1)

with open(filename) as f:
for line in f:
line = line.strip()
print convert_to_seg(line)
6楼(站大爷用户)

用Win7的计算器可以,调成程序员模式,可以直接置位和清位。
频繁使用的话还是编个程序吧。
7楼(站大爷用户)

自己写个程序吧,很快的。


==================================================================
还较真了啊,好吧:


#!/usr/bin/perl
open(FILE,$ARGV[0]);
while(){
$line=$_;
$max=$min=0;
$MaxIPs=$MinIPs="";
@data=split('/', $line);
@octs=split('\.',$data[0]);
$mask=$data[1];
$IPNumber=$octs[0]*256*256*256+$octs[1]*256*256+$octs[2]*256+$octs[3];
$BinaryIP=unpack("B32", pack("N", $IPNumber));
for($i=0;$i<32;$i++){
$temp=((32-$i)>$mask)?1:0;
$max+=(1-$temp)*(2**$i);
$min+=$temp*(2**$i);
}
$maxb=unpack("B32", pack("N", $max));
$minb=unpack("B32", pack("N", $min));
$MaxIP=$IPNumber|$min;
$MinIP=$IPNumber&$max;
$BinaryMaxIP=unpack("B32",pack("N",$MaxIP));
$BinaryMinIP=unpack("B32",pack("N",$MinIP));
@BinaryMaxIPOct=(substr($BinaryMaxIP,0,8), substr($BinaryMaxIP,8,8), substr($BinaryMaxIP,16,8), substr($BinaryMaxIP,24,8));
@BinaryMinIPOct=(substr($BinaryMinIP,0,8), substr($BinaryMinIP,8,8), substr($BinaryMinIP,16,8), substr($BinaryMinIP,24,8));
for($j=0;$j<3;$j++){
$MaxIPs .= ord(pack("B8", $BinaryMaxIPOct[$j])).".";
$MinIPs .= ord(pack("B8", $BinaryMinIPOct[$j])).".";
}
$MaxIPs.=ord(pack("B8",$BinaryMaxIPOct[3]));
$MinIPLastOct=ord(pack("B8",$BinaryMinIPOct[3]));
$MinIPs.=($mask==32)?$MinIPLastOct:$MinIPLastOct+1;
print $MinIPs,"-",$MaxIPs,"\n";
}
友情链接 (合作QQ207309712):  每日免费代理IP  代理IP知识问答  网站地图


©CopyRight 2012-2016 站大爷实时更新代理IP平台    客服QQ:207309712   投诉建议:2219765152

站大爷代理IP交流群:417568497 (2群)    299784290 (1群已满)       爬虫开发者交流群:343030927

警告:本站资源仅限用来计算机技术学习参考及大数据爬虫应用等合法行为,用户所有操作行为均有日志记录存档并保留2个月,用户若擅自利用本站资源从事任何违反本国(地区)法律法规的活动,由此引起的一切后果与本站无关。