python编写IP地址与十进制IP转换脚本
IP地址与十进制IP转换
#!/usr/bin/env python
#encoding=utf-8
import re
import sys
import os
def ten_to_two(ten_num):
two_str = ''
while ten_num != 1:
a = ten_num % 2
two_str = two_str + str(a)
ten_num = ten_num / 2
else:
two_str = two_str + str(1)
two_str = two_str[::-1]
if len(two_str) < 8:
cover = (8 - len(two_str)) * str(0)
two_str = cover + two_str
return two_str
def two_to_ten(two_num):
ten_int = 0
indexlist = range(len(two_num))
for i in indexlist:
ten_int += int(two_num[i]) * 2 ** indexlist[-(i+1)]
return str(ten_int)
def int_to_ipaddr(intnum):
int_addr = int(intnum)
twonum = ten_to_two(int_addr)
if len(twonum) < 32:
twonum = '0' * (32 - len(twonum)) + twonum
ipaddr = ''
for j in range(0, 32, 8):
k = j + 8
if j == 24:
ipaddr += two_to_ten(twonum[j:k])
else:
ipaddr += two_to_ten(twonum[j:k]) + '.'
return ipaddr
def ipaddr_to_int(ipaddress):
iplist = ipaddress.split('.')
ipstr = ''
for i in iplist:
ipstr += ten_to_two (int(i))
if ipstr.startswith('0'):
ipstr = re.sub('^0*', '', ipstr)
tennum = two_to_ten(ipstr)
return tennum
if len(sys.argv) < 2:
print 'No action specified.'
sys.exit()
elif len(sys.argv) == 2:
if sys.argv[1].startswith('--'):
option = sys.argv[1][2:]
if option == 'version':
print 'Version 1.1'
elif option == 'help':
print '''\
This program is used to convert the IP address.
\t-i ipaddress\n\t\tConvert the IP address.
\t\tlike ./iptrans.py 192.168.1.1
\t-if filename\n\t\tConvert the IP address's file.
\t\tlike ./iptrans.py ./ipfile
\t-t int ipaddress\n\t\tConvert the int IP address.
\t\tlike ./iptrans.py 3232235777
\t-tf filename\n\t\tConvert the IP address's file.
\t\tlike ./iptrans.py ./intipfile
\t--help\n\t\tDisplay this help.
\t--version\n\t\tPrints the version number.'''
else:
print 'Unknown option.'
sys.exit()
elif len(sys.argv) == 3:
if sys.argv[1].startswith('-'):
option = sys.argv[1][1:]
if option == 'i':
if sys.argv[2].count('.') == 3:
ipaddress = sys.argv[2]
intkey = ipaddr_to_int(ipaddress)
print '%s\t%s' % (ipaddress, intkey)
else:
print '%s is error.' % sys.argv[2]
sys.exit()
elif option == 'if':
if os.path.isfile(sys.argv[2]) == True:
filename = sys.argv[2]
f = open(filename, 'r')
for line in f:
ipaddress = line.replace('\n', '')
intkey = ipaddr_to_int(ipaddress)
print '%s\t%s' % (ipaddress, intkey)
else:
print 'The %s is not exist.' % sys.argv[2]
sys.exit()
elif option == 't':
intkey = sys.argv[2]
if int(intkey) < 16777217:
print '%s is error, must be great than 16777217' % sys.argv[2]
else:
ipaddress = int_to_ipaddr(intkey)
print '%s\t%s' % (intkey, ipaddress)
elif option == 'tf':
if os.path.isfile(sys.argv[2]) == True:
filename = sys.argv[2]
f = open(filename, 'r')
for line in f:
intkey = line.replace('\n', '')
ipaddress = int_to_ipaddr(intkey)
print '%s\t%s' % (intkey, ipaddress)
else:
print 'The %s is not exist.' % sys.argv[2]
sys.exit()
else:
print 'Unknown option.'
sys.exit()
else:
print 'Unknown option.'
sys.exit()
转载于:https://blog.51cto.com/gongniue/1825855
python编写IP地址与十进制IP转换脚本相关推荐
- golang 获取公网ip 内网ip 检测ip类型 校验ip区间 ip地址string和int转换 判断ip地区国家运营商
目录 简要简介net包 什么是外网IP和内网IP? 获取公网ip 获取本地ip 判断是否是公网ip ip地址string转int ip地址int转string 判断ip地址区间 通过淘宝接口根据公网i ...
- IP地址和二进制IP地址之间的转换
我们看到的IP通常是类似于127.0.0.1这样的字符串,然而计算机理解的则是像0x01111111100000000000000000000001(127.0.0.1)这样的ip地址方式. 对于Li ...
- IP地址及数制的转换
1.IP地址 1.1IP地址的类型 IPV4地址:由32位二进制数组成,用点分十进制表示 IPV6地址:由128位组成,一般用冒号分隔,十六进制表示 例子: 1.2IPV4网络地址类型 公有网络地址: ...
- IP地址子网掩码与数值转换
坚持每天写一篇学习总结博客,积跬步,至千里. 目录 学习目标 一.IP地址 1.1 IP地址的定义及分类 1.1.1 IP地址的格式 1.1.2 IP地址的分类 1.1.3 Internet上的合法I ...
- golang中获取公网ip、查看内网ip、检测ip类型、校验ip区间、ip地址string和int转换、根据ip判断地区国家运营商等
作者: 一蓑烟雨1989 所属专栏: Go从不放弃到实战 本文链接:https://blog.csdn.net/wangshubo1989/article/details/78066344 生命不止, ...
- 多网段多通道IP地址和通讯端口转换
产品型号:NET50-4NAT 特色功能:多网段多通道IP地址和通讯端口转换 产品介绍 工业通讯桥接器(NET50-4NAT)支持IP地址跨网段和通讯端口的转换,同时支持多网段.多通道和多通讯端口. ...
- 一个IP地址是由四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。如果输入的数字不足32位或超过32位或输入的数字中有非0和1的数字时输出“
题目 一个IP地址是由四个字节(每个字节8个位)的二进制码组成.请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出.如果输入的数字不足32位或超过32位或输入的数字中有非0和1的数 ...
- 统计两个IP地址之间的IP个数
问题 求两个IP地址之间的IP个数,例如192.18.16.1~192.18.16.5,2001:DB8:0000:0023:0008:0800:200C:417C~2001:DB8:0:23:8:8 ...
- 计算机网络如何计算有效ip地址个数,知道IP和子网掩码,如何计算可用IP数量和可用的IP地址?...
知道IP和子网掩码,如何计算可用IP数量和可用的IP地址?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 知道IP和子网 ...
最新文章
- 结合Android去水印APP谈谈分区存储
- PHP开发移动端接口
- sql having是什么意思_sql之汇总查询
- C指针原理(7)-C内嵌汇编
- OpenCASCADE:Foundation Classes简介
- python 坐标轴 单位刻度_Python学习笔记(matplotlib篇)--坐标轴刻度
- 空中最亮的星用计算机弹数字,赤峰——夜空中最亮的星_数字展示在线
- python设计模式2-工厂方法模式
- CPU Cache Line:CPU缓存行/缓存块
- angular.forEach()
- 我所期待的vs2007
- coherence初识
- php 占位符替换_AJAX ASP / PHP实例
- 淘宝抢拍器 chrome extension实现
- Unity3D 5.0软件安装教程
- JavaScript函数传参原理详解——值传递还是引用传递
- 堡垒机(运维审计系统)的基本原理与部署方式
- 电影推荐之《哈利波特与阿兹卡班的囚徒》 隐私策略(Privacy policy)
- 波士顿学院的计算机科学,权威公布:美国最强商学院,TOP5里有你的梦校吗?...
- Git 修改提交者信息