Python—IP地址与整数之间的转换

时间:2022-01-01 04:17:39

1. 将整数转换成IP:

思路:将整数转换成无符号32位的二进制,再8位进行分割,每8位转换成十进制即可。

方法一:#!usr/bin/python
2 #encoding=utf-8
3 #1. 将整数转换成32位无符号二进制
4 def intToIp(num):
5 s = []
6 g = []
7 h = []
8 for i in range(32):
9 a = num%2
10 s.insert(0,a)
11 num = num/2
12 print s
13 #2. 每8位进行分割,将4个8位二进制转换成十进制,加.连接即可。
14 for i in xrange(0,32,8):
15 g.append(s[i:i+8])
16 print g
17 for temp in g:
18 sum = 0
19 j = 0
20 for temp2 in temp:
21 sum = sum + temp2*(2**(7-j))
22 j += 1
23 print sum
24 h.append(str(sum))
25 return '.'.join(h)
26 a=intToIp(123456789)
27 print a

方法二:
 1 #!usr/bin/python
2 #encoding=utf-8
3 def inttoip(num):
4 s = bin(num)[2:]
5 s = s.zfill(32)
6 g = []
7 h = []
8 for i in xrange(0,32,8):
9 g.append(s[i:i+8])
10 for temp in g:
11 h.append(str(int(temp,2)))
12 e = ".".join(h)
13 print e
14
15 inttoip(123456789)

Python—IP地址与整数之间的转换

2. 将IP地址转换成整数:

思路:将IP的四位分别转换成8位二进制,去"."后整合,再换算成十进制。

#!usr/bin/python
2 #encoding=utf-8
3 #将IP地址转换为数值字符串,如7.91.205.21转换后为“123456789”
5 def IpToInt(num):
6 #1.将IP地址转换成32位的二进制。
7 s = num.split('.')
8 h = []
9 g = []
10 for temp in s:
11 while(temp!=0):
12 temp = int (temp)
13 a = temp % 2
14 h.insert(0,a)
15 temp = temp/2
16 if len(h)!= 8:
17 for i in range(8-len(h)):
18 h.insert(0,0)
19 g.extend(h)
20 h = []
21 # print g
22 #2. 将二进制换算成整数:
23 sum = 0
24 j = 0
25 for temp2 in g:
26 sum = sum + temp2*(2**(31-j))
27 j += 1
28 print sum
29 IpToInt("7.91.205.21")

方法二:借助Python内置函数
1 #!usr/bin/python
2 #encoding=utf-8
3 def iptoint(num):
4 h=[]
5 s = num.split(".")
6 for temp in s:
7 a = bin(int(temp))[2:]
8 a = a.zfill(8)
9 h.append(a)
10 g = "".join(h)
11 e = int(g,2)
12 print e
13
14 iptoint('7.91.205.21')

Python—IP地址与整数之间的转换

注:初学python,代码有点low,请见谅!

Python—IP地址与整数之间的转换的更多相关文章

  1. C# IP地址与整数之间的转换

    IP地址与整数之间的转换 1.IP地址转换为整数 原理:IP地址每段可以看成是8位无符号整数即0-255,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个无符号的32位整数. 举例:一 ...

  2. IP地址字符串与BigInteger的转换

    /**  * Copyright (c) 2010, 新浪网支付中心  *      All rights reserved.  *  * Java IP地址字符串与BigInteger的转换,  * ...

  3. Java IP地址字符串与BigInteger的转换, 支持IPv6

    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 3 ...

  4. python IP地址转16进制

    python IP地址转16进制 第一种方法: 通过socket.inet_aton实现 import socket from binascii import hexlify ary='192.168 ...

  5. ip地址与整数相互转换

    一.将ip地址转成long数值 将IP地址转化成整数的方法如下: 1.通过String的split方法按.分隔得到4个长度的数组 2.通过左移位操作(<<)给每一段的数字加权,第一段的权为 ...

  6. python中unicode&comma; hex&comma; bin之间的转换

    python中unicode, hex, bin之间的转换 背景 在smb中有个feature change notify, 需要改动文件权限dacl,然后确认是否有收到notify.一直得不到这个d ...

  7. 转:Python常见字符编码及其之间的转换

    参考:Python常见字符编码 + Python常见字符编码间的转换 一.Python常见字符编码 字符编码的常用种类介绍 第一种:ASCII码 ASCII(American Standard Cod ...

  8. python模块--ip地址转换为整数

    python整数与IP地址转换 [转] 我们有时会将一个整数与IP地址进行互换,用python代码实现很简单 将一个整数如2000000,变为一个IP地址的方式 >>> import ...

  9. ip&lpar;点分十进制 &lt&semi;&equals;&equals;&gt&semi; 二进制整数&rpar;之间的转换

    linux的套接字部分比较容易混乱,在这里稍微总结一下. 地址转换函数在地址的文本表达式和它们存放在套接字地址结构中的二进制值进行转换. 地址转换函数有四个:其中inet_addr 和 inet_nt ...

随机推荐

  1. &lbrack;No0000AD&rsqb;7z源码完全移植至Visual Studio 2015

    今天在上次的基础上(原文地址:[No0000AB]用Visual Studio 2015在 WIN10 64bit 上编译7-zip (32 bit)),将7Z的源码完全移植到了vs2015开发环境下 ...

  2. 第四篇 基于&period;net搭建热插拔式web框架(RazorEngine实现)

    在开头也是先给大家道个歉,由于最近准备婚事导致这篇文章耽误了许久,同时也谢谢老婆大人对我的支持. 回顾上篇文章,我们重造了一个controller,这个controller中用到了视图引擎,我们的视图 ...

  3. struts2 No result defined for action XXX and result input

    这种错误的原因一般是页面的属性和action里的属性个数.名称.类型不一致造成的 困扰了我一下午的问题,原来是表单中有两个input-text的name属性重复了,然后接受参数的时候就出现了这个错误 ...

  4. Android四大组件之一:Service(服务)

    Service跟Activity也是出于统一级别的组件,且与Activity的最大区别之一主要是没有人机界面,主要是运行在程序的后台(我是这么理解的),帮助文档上说的是运行于进程的主线程中,但是服务并 ...

  5. LA 4636 &lpar;贪心&rpar; Cubist Artwok

    题意: 一个由若干小正方体组成的图形,给出它的正视图和侧视图,求满足条件的最少小正方体的个数. 分析: 虽说是一道简单的贪心,可一直没有太好的思路. 又一次可耻地看了别人的题解. http://blo ...

  6. 类中成员函数与数据成员private&sol;pubic&sol;protected

    类中成员函数与数据成员private/pubic/protected

  7. ServletContext加入和访问

    (1)关于ServletContext认识: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGxnZW4xNTczODc=/font/5a6L5L2T/f ...

  8. 关于maven中一些问题的解决尝试

    在maven中会遇到很多问题,pom.xml啊,数据库没有自动建表等等. 需要先把运行项目,所依赖的jar项目install安装一下,然后Maven --> update project 一下. ...

  9. JQuery 分页显示jquery-pager-1&period;0&period;js

    原版是jquery-pager-1.0.js,经过变更修改加上按照项目中的一些需要修改过来. //初始化分页控件 PagerOptions为配置参数 url为要提交的url地址,如果不需要提交则可以为 ...

  10. linux中一些简便的命令之tac&sol;comm

    tac tac是cat的反写,即反序显示文件内容 如文件a.txt内容如下: 1 2 3 4 5 则tac a.txt打印如下: 54321 我们可以使用awk来实现tac的功能: awk '{arr ...