IP 转整数
网络所有处理都在浏览器本地完成,数据不上传服务器
IP 地址与整数互转,两个方向都认:输入 `192.168.1.1` 给出它的各个整数写法,输入 `3232235777` 给出对应的地址。 为什么这件事有个工具值得做?因为「把 IP 存成整数」是数据库里的常规做法 —— 4 字节而不是 15 字节,而且能直接对网段做范围查询。于是每个写过这类表的人都会撞上同一个问题:为什么从数据库里读出来是负数。 答案是 MySQL 的 `INT` 列带符号:`192.168.1.1` 存进去变成 `-1062731519`。所以这里把无符号与有符号分成两行并排给出 —— 有符号那行不是凑数的,它就是很多人来找的答案。 ⚠️ 反方向不猜:输入 `-1` 会报错,而不是替你转成 `255.255.255.255`。它到底是哪个地址取决于当初怎么存的,猜错会得到一个错的防火墙规则。 IPv6 一律按 128 位处理(十进制那行会很长,但不失精度)—— 用普通数字存 128 位会静默丢掉尾数,输出一个看着像但对不上的地址。
功能
- 两个方向都认:IP → 整数、整数 → IP,也可手动指定方向
- 无符号与有符号并列两行 —— 直接回答「数据库里为什么是负数」
- 点分十进制、十六进制、二进制(可选)几种写法一次给全
- IPv4 映射的 IPv6(`::ffff:192.168.1.1`)会额外给出内嵌的 IPv4
- 反向解析名(`1.1.168.192.in-addr.arpa`)
- IPv6 走 128 位整数,不失精度;超出 128 位会报错而不是取模
- 负数会报错,不替你猜二补数
- 全部在本机计算
使用方法
- 把 IP 地址或整数粘进左侧
- 自动判断方向,不合意就手动指定
- 结果立刻出现,每一行都能单独复制
常见问题
- 为什么从数据库里读出来的 IP 是个负数?
- 因为那个列是有符号的整数。MySQL 的 `INT` 是带符号 32 位,范围是 ±21 亿;而 `192.168.1.1` 对应的无符号值是 3232235777,超出了正数上限,于是按二补数显示成 `-1062731519`。 数据本身没坏,只是同一串比特的另一种读法。要修有两种方向:把列改成 `INT UNSIGNED`,或者读出来时在 SQL 里 `CAST` 一下。这里把两种读法并排列出来,就是为了让你一眼对上。
- 用整数存 IP 有什么好处?
- 两个:省空间(4 字节对 15 字节,索引也跟着小)和能做范围查询。 后一个更实用。用字符串存的时候,「找出所有属于 192.168.0.0/16 的记录」只能靠 `LIKE '192.168.%'`(会误伤 `192.168.0.1.example.com` 这种,而且用不上索引),而用整数存只需要 `WHERE ip BETWEEN 3232235520 AND 3232301055` —— 索引直接生效。
- `-1` 为什么不能转?明明就是 `255.255.255.255`。
- 在你那种存法下它确实是,但这里不知道你用的是哪种。同一个 `-1`:按「有符号 32 位」读是 `255.255.255.255`,按「无符号 64 位」读是 `18446744073709551615`,按「Python 的任意精度」读又是另一个数。 猜错一个 IP 的后果可能是一条错的防火墙规则或一条放行了不该放行的记录。所以这里选择报错,并把无符号/有符号两种读法都摆出来 —— 你对着自己的表结构一看就知道是哪个。
相关工具
CIDR 计算
网络输入 192.168.1.0/24 算出网络地址、广播地址、子网掩码、通配符掩码、可用范围与主机数,并判断地址类型。全部在浏览器本地完成,不上传。
随机 IP 生成器
网络批量生成随机 IP 地址:可选 IPv4、IPv6 或混合,公网段自动排除私有与保留地址,一次最多 100 条。
URL 解析
网络在线 URL 解析:拆出协议、主机、端口、路径、查询参数与锚点,参数逐个解码并与原始值对照,缺协议自动补 https://。全部在浏览器本地完成。
UA 解析
网络在线 User-Agent 解析:识别浏览器、版本、操作系统、设备类型与渲染引擎,并列出命中的匹配规则。结果基于模式匹配,仅供参考。全部在浏览器本地完成。
HTTP 状态码
网络HTTP 状态码查询与速查:输入编号查含义、1xx 到 5xx 分类、常见场景与排查提示,也能用关键词反查编号。全部在浏览器本地完成。
MIME 类型
网络MIME 类型与扩展名双向查询:输入 js 得到 text/javascript,输入 image/svg+xml 得到默认扩展名。附数据来源与覆盖范围,全部本地完成。