python整数与IP地址转换 [转]

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

>>> import socket
>>> import struct
>>> int_ip = 123456789
>>> ip = socket.inet_ntoa(struct.pack(‘I‘,socket.htonl(int_ip)))      #int to ip address
‘7.91.205.21‘
>>> socket.ntohl(struct.unpack("I",socket.inet_aton(str(ip)))[0])     #ip address to int
123456789L

其实这是进制数的转换,我们可以自己写代码

# 整数to IP地址格式

>>> def ch1(num):
             s = []
             for i in range(4):
                  s.append(str(num %256))
                  num /= 256
        return ‘.‘.join(s[::-1])
>>> ch1(123456789)
‘7.91.205.21‘

用lambda的方式,整数toIP 地址 一行代码搞定

>>> ch2 = lambda x: ‘.‘.join([str(x/(256**i)%256) for i in range(3,-1,-1)])
>>> ch2(123456789)
‘7.91.205.21‘

用lambda的方式,IP地址转换到整数

>>> ch3 = lambda x:sum([256**j*int(i) for j,i in enumerate(x.split(‘.‘)[::-1])])
>>> ch3(‘7.91.205.21‘)
123456789

python整数与IP地址转换 [转]

时间: 2024-10-08 20:04:23

python整数与IP地址转换 [转]的相关文章

整数与IP地址间的转换

描述 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数.举例:一个ip地址为10.0.3.193每段数字             相对应的二进制数10                   000010100                    000000003                    00000011193                  11000001组合起来即为:00001010 00000000

IP 地址转换 inet_addr() inet_ntoa() 笔记

inet_addr()   inet_ntoa() 及其自实现函数self_inet_ntoa() 和 self_inet_addr() 笔记 #include <WINSOCK2.h> #include <iostream> #pragma comment(lib,"WS2_32.LIB") using namespace std; char *self_inet_ntoa(UINT in); ULONG self_inet_addr(const char *

Python学习笔记-IP地址处理模块Ipy

IP地址处理模块Ipy IPy模块可以很好的辅助我们高效完成IP的规划工作. 参考:https://github.com/autocracy/python-ipy 安装IPy模块 [[email protected] ~]# python36 -m easy_install -i http://pypi.douban.com/simple/ IPy 导入模块 In [12]: from IPy import IP 1.IP地址.网段的基本处理 通过version区分IPv4和IPv6: In [

1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client

 1  Socket编程 socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP 地址+端口号"就称为socket. 在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接.socket本身有"插座"的意思,因此用来描述网络连 接的一对一关系. TCP/IP协议最早在BSD UNIX上实现,

字符串-06. IP地址转换

1 /* 2 * Main.c 3 * D6-字符串-06. IP地址转换 4 * Created on: 2014年8月19日 5 *******测试通过******** 6 *转载:http://blog.csdn.net/junjieguo/article/details/7392539 7 */ 8 9 10 #include <stdio.h> 11 12 int bin_dec(int x, int n) //自定义函数将二进制数转换为10进制 13 { 14 if(n == 0)

字符串-06. IP地址转换(20)

一个IP地址是用四个字节(每个字节8个位)的二进制码组成.请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出. 输入格式: 输入在一行中给出32位二进制字符串. 输出格式: 在一行中输出十进制格式的IP地址,其由4个十进制数组成(分别对应4个8位的二进制数),中间用"."分隔开. 输入样例: 11001100100101000001010101110010 输出样例: 204.148.21.114 import java.math.BigInteger; import

IP地址转换成Long型数字的算法

在应用程序开发中,涉及到IP地址的存储,大部分开发人员都将其存为String(或文本类型).能否将固定格式为m.n.x.y的IP地址转换成 Long型的数字呢?答案是肯定的.在数据库层面,可以直接将结果设置成表的主键,避免IP地址的重复,因为是主键,也就是表的索引了,数据库查找时会更 快. 对于格式为m.n.x.y的IP地址,转换成Long型数字的算法如下: view plain   copy Long  =  * 256 * 256 * m + y 使用Java语言,则这样实现: view p

(四十七)socket编程——socket引入、网络字节序、IP地址转换函数、sockaddr数据结构介绍

一.什么是socket socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP地址+端口号"就称为socket. 在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接.socket本身有"插座"的意思,因此用来描述网络连接的一对一关系. TCP/IP协议最早在BSD UNIX上实现,为TCP/

四、IP地址转换

IP地址与端口 TCP/IP(传输控制协议/网际协议)不是一个协议,而是一组协议的总称,包括IP.TCP.UDP.ICMP.ARP等.它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据交换格式以及传送方式. IP地址:是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围内惟一的标识符. 一个IP地址主要由两部分组成:网络地址和主机地址. 网络地址由因特网权力机构分配,主机地址由各个网络的管理员统一分配. IP地址编制方案有两种:IPV4和IPV6 IPV4:二进制表示共3