IP地址与二进制之间的转换

在讨论如何进行IP地址与二进制之间的转换前, 有必要解释一下IP地址与二进制的概念

IP

IP协议是网络层的一个协议, 是能使连接到网上的所有计算机网络实现相互通信的一套规则, 目的是根据源主机和目的主机的地址来传送数据.

IP地址是一组能够识别主机和所在网络的编号, 由32位二进制数组成(等于4字节),为便于使用,常以XXX.XXX.XXX.XXX形式表现,每组XXX代表小于或等于255的10进制数。

每个IP地址(尽管它看起来分为四部分)被分解成两个部分......但这些部分并不相同。部分IP地址用于“网络ID”,其余地址用于“主机ID”.网络ID可以定位你所在的某个特定网络, 而主机ID可以定位你所在网络正在使用的主机

大多数IP地址可以划分地址类别:

A类地址:IP地址的前8位用于网络ID。最终的24位用于主机ID.(192.168.16.10)

B类地址:IP地址的前16位用于网络ID。最后的16位用于主机ID.(192.168.16.10)

C类地址:IP地址的前24位用于网络ID。最后的8位用于主机ID.(192.168.16.10)

Ps:网络ID永远在主机ID之前

二进制

我们通常生活中的数学计算都是以十进制为基础的, 任何一个数字都可以用个(1), 十(10), 百(100), 千(1000), 万(10000)…这样的数位相加而成

ip地址转化为二进制 python ip地址转换2进制_ip地址转化为二进制 python

例如5349这个数可以用十进制表示为:

5349 =

5 * 1000 +

3 * 100 +

4 * 10 +

9 * 1

而二进制数顾名思义,就是以二进制为基础的数, 用0和1两个数来表示, 同样我们可以用二进制来表示任何一个数字

ip地址转化为二进制 python ip地址转换2进制_IP_02

例如216这个数

216 =

1 * 128 +

1 * 64 +

0 * 32 +

1 * 16 +

1 * 8 +

0 * 4 +

0 * 2 +

0 * 1

提取乘号之前的数字我们得到所代表的二进制数: 11011000

又比如8这个数字

8 =

1 * 8 +

0 * 4 +

0 * 2 +

0 * 1

得到转换后的二进制数: 1000

转换过程

通过上面的分析, 我们可以了解到IP地址与二进制之间的转换其实就是十进制与二进制之间的转换

IP地址可以表示成这种32位二进制形式

11000000, 10101000, 00111011, 00011000

也可以是4位十进制形式:

192.168.59.24

二进制转换为十进制

ip地址转化为二进制 python ip地址转换2进制_十进制_03

我们以11000000这个数为例, 根据上图,将1,0依次代入所在数位, 然后相加所在数位数字:

1 * 128 +

1 * 64 +

0 * 32 +

0 * 16 +

0 * 8 +

0 * 4 +

0 * 2 +

0 * 1 = 192

192就是11000000的十进制形式

十进制转换为二进制

参考本文二进制部分,同理, 附一张例子图片

ip地址转化为二进制 python ip地址转换2进制_十进制_04