一日一技:IPv4地址和长整数的互相转换

IPv4的格式为xxx.xxx.xxx.xxx其中,3个点分割的4个数字xxx表示0-255中的任意数字,例如:128.199.231.44 IPv4还有一种长整数的表示方法,例如:128.199.231.44转换为长整数,为:2160584492

那么这个转换过程是如何发生的呢?实际上非常简单。

  1. 首先使用把IP地址分成4个数字: 128 199 231 44
  2. 把每个数字转换为2进制,如果转换后这个数字对应的二进制数不够8位,在左侧补0: 10000000 11000111 11100111 00101100
  3. 把这4个二进制数直接评价在一起: 10000000110001111110011100101100
  4. 把拼接以后的二进制数转换为10进制数: 2160584492

那么,如何把这个过程倒过来,给你一个长整数,如何转换为IP地址呢?例如 986913820,转换为IP地址为: 58.211.28.28

过程如下:

  1. 把长整数转换为二进制: 986913820对应: 111010110100110001110000011100
  2. 从右向左,每8位一组,切分这个二进制数: 111010(最左边这一组二进制数可以不够8位), 11010011, 00011100 00011100
  3. 把每一组二进制位转换为十进制: 58, 211, 28, 28
  4. 把十进制数拼成IP的格式: 58.211.28.28

在明天的文章中,我们将会讲到,如何把负的长整数转换为IP地址。

原文发布于微信公众号 - 未闻Code(itskingname)

原文发表时间:2019-01-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券