数字地址就是 IP 地址的一种:即 IP 地址的数字化形式,
在浏览器中访问 http://192.168.1.123 与 http://3232235899 是相同的效果。
IPv4 和 IPv6 之间的差异
IPv4(Internet 协议版本 4): 当前是主流 IP 地址,由 32 位组成。可以使用大约 43 亿个地址。 它表示为由 3 个点分隔的 4 个部分的集合,每个部分都有 8 位数据,称为八位位组。 例如:192.168.1.123
IPv6(Internet 协议版本 6): 基于 IPv4 平台开发的地址表示规则,以满足 IPv4 限制。 它由 128 位组成,数量有 2^128(约3.4×10^38)= 340282366920938463463374607431768211456 个。 IPv6 地址范围从 [0000:0000:0000:0000:0000:0000:0000:0000] 到 [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]。 例如:0000:0000:0000:0000:0000:ffff:c0a8:017b
IPv4地址 转换成 Int数字 的方法如下:
例子:192.168.1.123
3 个点把 IP 地址分成 4 个数字,每个数字的范围都是 0 ~ 255,所以是每个数字是 8 bit,
总共 32 bit,4 个字节,刚好可以用无符号的数据类型 uint 表示。
具体计算过程如下:
192*256^3 + 168*256^2 + 1*256^1 + 123*256^0 = 3232235899
Int数字 转换成 IPv4地址 的方法如下:
例子:3232235899
具体计算过程如下:
-
3232235899 & 255,取低位的 1 个字节,得到 123
-
(3232235899 >> 8) & 255,先右移 8 bit,把原低 8 bit移除,再取低位的 1 个字节,得到 1
-
(3232235899 >> 16) & 255,先右移 16 bit,把原低 16 bit移除,再取低位的 1 个字节,得到 168
-
(3232235899 >> 24) & 255,先右移 24 bit,把原低 24 bit移除,再取低位的 1 个字节,得到 192