编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 网络工具 / IP与整数互转

IP与整数互转

IPv4地址与32位整数一键互转

输入
结果

这个工具能做什么

IP 与整数互转工具做的事很具体:把点分十进制的 IPv4 地址(如 192.168.1.1)和一个 32 位无符号整数(如 3232235777)之间来回换算,两个方向都支持。开发里经常要把 IP 存进数据库,直接存字符串既占空间,又不利于排序、范围比较和网段查询;把 IP 压成一个整数后,用 INT 或 BIGINT 字段存更紧凑,建索引和做区间判断都更快。这个工具解决的正是「手算容易出错、又懒得每次单独写段代码验证」的问题——把 IP 或数字粘进去就能看到对应结果。全部换算在浏览器本地完成,不上传任何数据。

换算原理很直接:IPv4 地址本质上就是 4 个字节(octet),每段取值 0 到 255。转整数时把第一段左移 24 位、第二段左移 16 位、第三段左移 8 位,再与第四段按位或,等价于 a×256³ + b×256² + c×256 + d。以 192.168.1.1 为例,结果是 192×16777216 + 168×65536 + 1×256 + 1 = 3232235777。反向还原就是不断除以 256 取余,或用位与和右移逐段拆出四个字节。因为最高位可能为 1,结果必须按 32 位无符号数处理,取值范围是 0 到 4294967295(即 2³²−1)。

最典型的场景是数据库存储与查询。比如做 IP 归属地库、访问日志或黑白名单,把 IP 存成 INT UNSIGNED 字段后,判断「某个 IP 是否落在某网段内」就变成一次整数区间比较,例如 WHERE ip_int BETWEEN start AND end,比字符串 LIKE 或逐段拆分快得多。MySQL 自带的 INET_ATON('192.168.1.1') 与 INET_NTOA() 正是干这个的,本工具的结果和它们完全一致,方便你在写 SQL 前先核对一遍。另一个常见场景是网络编程里排查问题,比如处理 htonl/ntohl 字节序、看防火墙规则或抓包日志时,快速把一串数字还原成人能读的点分 IP。

有几个坑值得留意。首先这是 IPv4 专用,32 位整数装不下 128 位的 IPv6,后者要用两个 64 位整数或字符串/二进制来存,别混用。其次是有符号溢出:Java 的 int、以及部分语言默认的 32 位有符号整数,遇到 128 以上开头的 IP 会得到负数,应改用 long 或无符号类型;MySQL 里也要用 INT UNSIGNED,用有符号 INT 大于 2147483647 的值会被截断。最后,点分四段里每段必须在 0 到 255 之间,像 256.1.1.1 这样的输入是非法地址,并不对应任何合法的 32 位整数映射。

IP与整数互转是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“ip转整数”、“整数转ip”、“ip转数字”,说的都是这个。

常见使用场景

使用方法

  1. 把内容粘贴到输入框(生成类工具直接设置选项)。
  2. 按需要选择选项,点操作按钮。
  3. 结果出现在下方,点「复制结果」即可带走。

常见问题

IP 转成的整数取值范围是多少?
IPv4 是 32 位,对应无符号整数范围 0 到 4294967295(即 2³²−1)。其中 0.0.0.0 转为 0,255.255.255.255 转为 4294967295。
为什么我自己算出来是个负数?
因为用了 32 位有符号整数(如 Java 的 int),IP 最高位被当成了符号位。改用 long 或无符号类型即可;本工具统一按无符号处理,不会出现负数。
结果和 MySQL 的 INET_ATON 一致吗?
一致。本工具采用与 INET_ATON/INET_NTOA 相同的按位换算规则,可以直接拿结果核对 SQL,或代替手算。
支持 IPv6 吗?
不支持。IPv6 是 128 位地址,无法映射成单个 32 位整数,本工具只处理 IPv4 的点分四段格式。
把 IP 存数据库该用什么字段类型?
推荐 MySQL 的 INT UNSIGNED,4 字节刚好容纳 0 到 4294967295;不要用有符号 INT,否则大于 2147483647 的值会溢出出错。

相关工具

查看全部「网络工具」工具 →

相关名词解释