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转换脚本相关推荐

  1. golang 获取公网ip 内网ip 检测ip类型 校验ip区间 ip地址string和int转换 判断ip地区国家运营商

    目录 简要简介net包 什么是外网IP和内网IP? 获取公网ip 获取本地ip 判断是否是公网ip ip地址string转int ip地址int转string 判断ip地址区间 通过淘宝接口根据公网i ...

  2. IP地址和二进制IP地址之间的转换

    我们看到的IP通常是类似于127.0.0.1这样的字符串,然而计算机理解的则是像0x01111111100000000000000000000001(127.0.0.1)这样的ip地址方式. 对于Li ...

  3. IP地址及数制的转换

    1.IP地址 1.1IP地址的类型 IPV4地址:由32位二进制数组成,用点分十进制表示 IPV6地址:由128位组成,一般用冒号分隔,十六进制表示 例子: 1.2IPV4网络地址类型 公有网络地址: ...

  4. IP地址子网掩码与数值转换

    坚持每天写一篇学习总结博客,积跬步,至千里. 目录 学习目标 一.IP地址 1.1 IP地址的定义及分类 1.1.1 IP地址的格式 1.1.2 IP地址的分类 1.1.3 Internet上的合法I ...

  5. golang中获取公网ip、查看内网ip、检测ip类型、校验ip区间、ip地址string和int转换、根据ip判断地区国家运营商等

    作者: 一蓑烟雨1989 所属专栏: Go从不放弃到实战 本文链接:https://blog.csdn.net/wangshubo1989/article/details/78066344 生命不止, ...

  6. 多网段多通道IP地址和通讯端口转换

    产品型号:NET50-4NAT 特色功能:多网段多通道IP地址和通讯端口转换 产品介绍 工业通讯桥接器(NET50-4NAT)支持IP地址跨网段和通讯端口的转换,同时支持多网段.多通道和多通讯端口. ...

  7. 一个IP地址是由四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。如果输入的数字不足32位或超过32位或输入的数字中有非0和1的数字时输出“

    题目 ‬‬一个IP地址是由四个字节(每个字节8个位)的二进制码组成.请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出.如果输入的数字不足32位或超过32位或输入的数字中有非0和1的数 ...

  8. 统计两个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 ...

  9. 计算机网络如何计算有效ip地址个数,知道IP和子网掩码,如何计算可用IP数量和可用的IP地址?...

    知道IP和子网掩码,如何计算可用IP数量和可用的IP地址?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 知道IP和子网 ...

最新文章

  1. 结合Android去水印APP谈谈分区存储
  2. PHP开发移动端接口
  3. sql having是什么意思_sql之汇总查询
  4. C指针原理(7)-C内嵌汇编
  5. OpenCASCADE:Foundation Classes简介
  6. python 坐标轴 单位刻度_Python学习笔记(matplotlib篇)--坐标轴刻度
  7. 空中最亮的星用计算机弹数字,赤峰——夜空中最亮的星_数字展示在线
  8. python设计模式2-工厂方法模式
  9. CPU Cache Line:CPU缓存行/缓存块
  10. angular.forEach()
  11. 我所期待的vs2007
  12. coherence初识
  13. php 占位符替换_AJAX ASP / PHP实例
  14. 淘宝抢拍器 chrome extension实现
  15. Unity3D 5.0软件安装教程
  16. JavaScript函数传参原理详解——值传递还是引用传递
  17. 堡垒机(运维审计系统)的基本原理与部署方式
  18. 电影推荐之《哈利波特与阿兹卡班的囚徒》 隐私策略(Privacy policy)
  19. 波士顿学院的计算机科学,权威公布:美国最强商学院,TOP5里有你的梦校吗?...
  20. Git 修改提交者信息

热门文章

  1. Winrar从命令行查看压缩文件内容
  2. tomcat基本使用和超图基本jsp例子
  3. 2019秋第二周学习总结
  4. 剑指offer——变态跳台阶
  5. python3: 数字日期和时间(1)
  6. 生产者消费者模式 php 【转】
  7. makefile中的include *******
  8. mac找不到mysql数据库_mac下mysql升级后找回丢失数据库
  9. python怎么把图片压缩_使用Python轻松批量压缩图片
  10. python表示语句块采用_python中什么是语句块?