引言
将IP地址转换成十进制整数,或者将十进制整数转换成IP地址,在网络编程中经常会遇到,其中的转换算法非常简单,利用强大的Python,更是只需要1-2行代码就搞定了。
算法描述
IP地址转换成整数算法
1. 将 IP(A.B.C.D) 地址按照“."分割成4部分;
2. 分别将分割的四部分(A, B, C, D)转换成正整数 a, b, c, d(它们的取值范围为0-255,一个字节就可以存储);
3. 将分割的四个整数a, b, c, d 分别作为32位正整数的4个字节,由高到低保存。
整数转换成IP地址算法
1. 取32位整数的4个字节作为单独的整数 a, b, c, d;
2. 将 a, b, c, d 分别作为 IP 地址的字符串 A, B, C, D;
3. 转化成IP地址形式 A.B.C.D。
示范代码
# -*- coding: cp936 -*-
IP = "192.168.10.1"
def addr2dec(addr):
"将点分十进制IP地址转换成十进制整数"
items = [int(x) for x in addr.split(".")]
return sum([items[i] << [24, 16, 8, 0][i] for i in range(4)])
def dec2addr(dec):
"将十进制整数IP转换成点分十进制的字符串IP地址"
return ".".join([str(dec >> x & 0xff) for x in [24, 16, 8, 0]])
dec = addr2dec(IP)
print dec
print dec2addr(dec)
输出结果
3232238081
192.168.10.1