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转数字”,说的都是这个。
常见使用场景
- 把 IP 存成整数写进数据库更省空间
- 核对 SQL 里 INET_ATON 的换算结果
- 网段范围查询前把 IP 转成整数区间
- 排查日志里出现的 IP 整数值
- 网络编程中还原字节序转换后的 IP
使用方法
- 把内容粘贴到输入框(生成类工具直接设置选项)。
- 按需要选择选项,点操作按钮。
- 结果出现在下方,点「复制结果」即可带走。