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

1. 将整数转换成IP:

思路:将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[::1])
 26 a=intToIp(123456789)
 27 print a

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

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

#!usr/bin/python
  2 #encoding=utf-8
  3 #将IP地址转换为数值字符串,如7.91.205.21转换后为“123456789”
  4 #1.按.分割,2. 分割后的第一位乘以256**4,第二位乘以256**3,第三位乘以256**2,第四位乘以256,结果相加
  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,代码有点low,请见谅!

原文地址:https://www.cnblogs.com/pengpp/p/9205296.html

时间: 2024-10-07 00:23:21

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

IP地址字符串与BigInteger的转换

/**  * Copyright (c) 2010, 新浪网支付中心  *      All rights reserved.  *  * Java IP地址字符串与BigInteger的转换,  * 支持IPv6  *  */ import java.math.BigInteger; import java.net.InetAddress; import java.net.UnknownHostException; /**  * IP转换大数进行比较工具  *  * @author [emai

python IP地址转16进制

python IP地址转16进制 第一种方法: 通过socket.inet_aton实现 import socket from binascii import hexlify ary='192.168.1.1' packed_ip_addr = socket.inet_aton(ary) hexStr=hexlify(packed_ip_addr) print('IP:'+hexStr) 输出: IP:c0a80101 第二种方法: 将字符串分割成数组,在转换成16进制 ary='192.168

ip(点分十进制 <==> 二进制整数)之间的转换

linux的套接字部分比较容易混乱,在这里稍微总结一下. 地址转换函数在地址的文本表达式和它们存放在套接字地址结构中的二进制值进行转换. 地址转换函数有四个:其中inet_addr 和 inet_ntoa适用于IPv4,inet_pton 和 inet_ntop同时适于用IPv4和IPv6. 套接字地址结构分为IPv4套接字地址结构sockaddr_in和IPv6套接字地址结构sockaddr_in6.其中IPv4的套接字地址结构如下. IPv4套接字地址结构:(定义在<netinet/in.h

C# IP地址与数字之间的互转

using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; namespace ip2Long { class Program { static void Main(string[] args) { //首先,输入一个标准的IP地址 例如 192.168.1.1 Console.WriteLine("请输入一个标准的IP地址 例如 192.168.1

论述ip地址和子网掩码之间的关系及网关、dns的含义

你一定对IP地址有所了解吧?我们知道在INTERNET中广泛使用的TCP/IP协议就是利用IP地址来区别不同的主机的.如果你曾经进行过TCP/IP协议设置,那么你一定会遇到子网掩码(Subnet mask)这一名词,那么你知道什么是子网掩码吗?它有什么作用呢? 我们知道IP地址是一个4字节(共32bit)的数字,被分为4段,每段8位,段与段之间用句点分隔.为了便于表达和识别,IP地址是以十进制形式表示的如210.52.207.2,每段所能表示的十进制数最大不超过255.IP地址由两部分组成,即网

python IP地址查询归属

#!/usr/bin/env python # -*- coding: utf-8 -*- #查找IP地址归属地 #writer by keery_log #Create time:2013-10-30 #Last update:2013-10-30 #用法: python chk_ip.py www.google.com |python chk_ip.py 8.8.8.8 |python chk_ip.py ip.txt import signal import urllib import j

CIPAddress中获取的IP地址与CString的互相转换

// IPAddressCtrl中的IP地址转为CString CIPAddressCtrl* pIp = (CIPAddressCtrl*)GetDlgItem(IPADDRESS); BYTE bytIp1, bytIp2, bytIp3, bytIp4; pIp->GetAddress(bytIp1, bytIp2, bytIp3, bytIp4); CString strIp; strIp.Format(_T("%u.%u.%u.%u"), bytIp1, bytIp2,

js中ip地址与整数的相互转换

转载地址 //IP转成整型function _ip2int(ip) {    var num = 0;    ip = ip.split(".");    num = Number(ip[0]) * 256 * 256 * 256 + Number(ip[1]) * 256 * 256 + Number(ip[2]) * 256 + Number(ip[3]);    num = num >>> 0;    return num;} //整型解析为IP地址functi

MySQL:IP 地址转换(在常见IP地址现数字之间相互转换)

mysql> select inet_aton('192.168.202.12'); +-----------------------------+ | inet_aton('192.168.202.12') | +-----------------------------+ |                  3232287244 | +-----------------------------+ 1 row in set (0.00 sec) 2.IP由数据形式转换为点分形式 mysql>