IPv4 地址转换器

在 IPv4 的点分十进制、32 位十进制、十六进制与二进制之间互相转换,并查看其 in-addr.arpa 形式。

一个地址,多种表示。 在任意 IPv4 地址的点分十进制、32 位整数、十六进制与二进制形式间切换,并显示反向 DNS 的 in-addr.arpa 名称。纯数学运算,在浏览器内完成。

十进制(uint32)
十六进制
二进制
in-addr.arpa

同一个地址的四种写法

点分十进制背后的 32 位

IPv4 地址本质上是一个 32 位无符号整数。我们熟悉的点分四段写法只是一种显示约定:192.168.1.1 是四个 8 位分段各自用十进制书写、再用点连接的结果,比它真实的数值 3232235777 好读得多。本页的每一种写法都是同一个数字换了件衣服,因此互相转换不会丢失任何信息。

十进制形式就是把这个整数完整写出来。十六进制形式把 32 位切成 8 个十六进制数字,好处是每两位正好对应一个字节——0xC0A80101 可以干净地拆成 C0、A8、01、01。二进制形式让比特边界变得可见,在推敲子网掩码时正是你需要的视角。

各种写法的实际用途

整数形式出现在需要低成本存储和比较地址的场合。数据库偏爱它,因为 INT UNSIGNED 的排序和范围扫描比字符串快得多,WHERE ip BETWEEN x AND y 可以直接走索引。日志管道和 GeoIP 库把地址段表示成整数对,也是同样的原因。

十六进制常见于抓包结果、内核数据结构和一些较老的配置格式。二进制主要用于教学和排错:把地址和掩码按二进制对齐排列,网络位与主机位的划分就不再抽象。

反向 DNS 与 in-addr.arpa

正向 DNS 把域名解析为地址,反向 DNS 则相反。由于 DNS 的授权是从右往左逐级细化,而 IPv4 地址是从左往右逐级细化,两者方向相反,所以octet 必须倒序书写。192.168.1.1 对应 1.1.168.192.in-addr.arpa,该名称下的 PTR 记录给出主机名。邮件服务器会例行检查这一项——PTR 缺失或与正向记录不一致,是正常邮件被判为垃圾邮件的常见原因。

开源说明:使用原生 JavaScript 实现,不依赖第三方库。

常见问题

十进制形式有什么用?
它是把地址当作一个 32 位无符号整数来读。数据库、防火墙和 IP 归属地表常用这种形式存储地址,因为整数区间比较的开销极小。
为什么 255.255.255.255 显示为 4294967295?
因为转换按无符号处理。把结果当作有符号 32 位整数的语言会把同一地址显示为 -1,本工具始终给出无符号值。
in-addr.arpa 形式是什么?
它是反向 DNS 查询使用的域名。把各段顺序颠倒再加上后缀即可,例如 192.168.1.1 对应 1.1.168.192.in-addr.arpa。
二进制为什么分成四组显示?
每一组就是一个八位组。按点分组后可以一眼看出子网掩码在哪一位切开地址,而这通常正是需要看二进制的唯一原因。
支持 IPv6 吗?
不支持,本转换器仅处理 IPv4。IPv6 地址长 128 位,采用以冒号分段并支持 :: 压缩的另一套文本表示法。
有数据被发送到服务器吗?
没有。转换只是纯粹的算术运算,全部在浏览器内完成,你粘贴的地址不会离开这个页面。