一日一技:负长整数如何转换为IPv4地址?

简介: 一日一技:负长整数如何转换为IPv4地址?

今天来说说,如何把负的长整数转换为IP地址,例如: -986913820转换为IP地址,为: 197.44.227.228

要把负长整数转换为IP,需要首先知道一个概念: 补码

所谓补码,就是二进制数逐位取反,再+1。什么叫做逐位取反呢?就是0变成1,1变成0.

那么,把负的长整数转换为二进制,过程如下:

  1. -986913820的负号去掉,然后转换为二进制数: 111010110100110001110000011100,这个二进制数只有30位,而IP对应的长整数是32位,所以左边补两个0,变成: 00111010110100110001110000011100
  2. 逐位取反,得到: 11000101001011001110001111100011
  3. 对这个二进制数+1,得到: 11000101001011001110001111100100
  4. 把这个32位的二进制数,8位一组分开,获得: 11000101, 00101100, 11100011, 11100100
  5. 把这4组二进制数转换为十进制: 197, 44, 227, 228
  6. 把4个数按顺序拼接为IP地址格式: 197.44.227.228

在计算机中,负数都是使用补码的形式来表示的,所以对于两个二进制数相减,在计算机中实际上是做得被减数加上减数的补码。如果大家对此有兴趣,请在评论留言,我们明天细讲。

目录
相关文章
|
6月前
|
运维 监控 网络协议
IPv6地址之间的转换技术:NAT66
【4月更文挑战第25天】
880 0
IPv6地址之间的转换技术:NAT66
|
6月前
|
网络协议 网络虚拟化
10.1.1.0/31这个地址到底能不能用?31位长度的掩码是怎么回事?
10.1.1.0/31这个地址到底能不能用?31位长度的掩码是怎么回事?
|
6月前
|
Python
用代码计算子网掩码对应的网络前缀的长度:子网掩码255.224.0.0所对应的网络前缀长度是( )
用代码计算子网掩码对应的网络前缀的长度:子网掩码255.224.0.0所对应的网络前缀长度是( )
98 0
|
11月前
IP地址转换函数
IP地址转换函数
49 0
|
测试技术
华为OD:IPv4地址转换成整数
华为OD:IPv4地址转换成整数
133 0
|
算法
IP地址转换整型(算法练习)
IP地址转换整型(算法练习)
138 0
IP地址转换整型(算法练习)
|
网络协议 数据中心
一文告诉你什么是IPv6转换服务
IPv6转换服务(IPv6 Translation Service),是一种有状态的IPv6和IPv4网络地址与协议转换服务。通过IPv6转换服务,具备公网IPv4地址的服务器可快速面向IPv6网络侧用户提供访问服务。
1572 0
计算子网掩码中存在的主机数
一个局域网中某台主机的ip地址为176.68.160.12,使用22位作为网络 ,那么该局域网的子网掩码为____,最多可以连接的主机数为____. 该局域网的子网掩码是255.255.252.0最多可以连接的主机数量为1022台计算子网掩码的过程是:子网掩码是由连续的“1”和连续的“0”构成,所...
2150 0