使用方法
第一步,选模式。IP转二进制转换器默认停在「IPv4 → 二进制 / 十六进制 / 十进制」,输入框里已经填好 192.168.1.1,打开页面结果区就有内容,不需要先点任何按钮。
第二步,填地址。只写点分十进制:四段、三个点、每段 0 到 255 的纯数字、不带前导零。写成「192.168.001.1」会被拒绝,因为前导零在历史上被解读成八进制,同一串字符有两种含义,本页直接拒掉以免误判。
第三步,看结果。结果区一次给出五种信息:四段八位二进制(段间一个空格)、四段连写的两位十六进制、32 位无符号整数、这个地址属于 A 到 E 哪一类、以及它落在哪一段特殊用途区间。五种信息排成五行,等宽字体显示,位与位不会看串行。
第四步,想从整数反推地址,就把模式切到「十进制整数 → IPv4」,输入框改填 3232235777,结果区第一行会给出 192.168.1.1,同时照样给出二进制与十六进制。两种模式共用同一个输入框,切换时会自动重算一次。
点「载入示例」把模式和输入一次性还原成默认值;点「复制结果」把五行结果一起放进剪贴板。下方对照表的「导出对照表 CSV」下载带 UTF-8 BOM 的表格,Excel 打开中文不乱码;「复制对照表」按 TSV 复制,可直接粘进表格软件。
这个工具能解决什么问题
第一,做子网划分时必须把地址看成二进制。/24 掩码的意思是前 24 位不变、后 8 位随意,这个结论只有把 192.168.1.1 写成 11000000 10101000 00000001 00000001 之后才一目了然。手写转换时最容易在「168 = 10101000」这种中间段上出错,本页逐段给出,可直接对照。
第二,数据库与日志里整数形式的地址要能还原。很多系统为了省空间把 IPv4 存成 32 位无符号整数,MySQL 的 INT UNSIGNED 四字节就能放下,而字符串形式的「192.168.1.1」至少要十几个字节。排错时日志里出现 3232235777 这样的字段,切到反向模式一比就知道是哪台设备。
第三,判断一个地址是内网还是公网。10 开头、172.16 到 172.31、192.168 开头这三段是 RFC 1918 定义的私有地址,不会出现在互联网上;127 开头指向本机;169.254 表示 DHCP 没拿到地址;100.64 是运营商级 NAT。结果区的「用途」一行直接给出结论,不用背表。
第四,接口与报文调试。抓包工具、字节序讨论、Socket 编程里时常要在二进制、十六进制、整数三种写法间切换。本页三种表示一次给全,避免在计算器、记事本和在线工具之间来回搬运。
本页不做这些事:不做子网划分与通配符掩码计算;不解析 IPv6 与 MAC 地址;不做反向 DNS 查询和归属地查询。它只回答「一个 IPv4 地址的三种表示分别是什么,以及它属于哪一类、哪一种用途」。
转换原理与变量说明
IPv4 地址是 32 位无符号整数,点分十进制把它按 8 位一段切成四段,每段单独换算成十进制。所以核心变量只有四个:a、b、c、d,各取 0~255,输入框里那串字符按点切开就得到它们。
二进制表示:对每一段取 n.toString(2),不足 8 位时在前面补零。192 的二进制是 11000000,1 的二进制是 1,补足八位写成 00000001。四段之间用一个空格分隔,纯粹为了人眼读数,空格不是数据的一部分。
十六进制表示:对每一段取 n.toString(16),不足两位补零,再四段连写并转为大写。192 是 c0、168 是 a8、1 是 01,连起来就是 C0A80101。补零这一步不能省:1 若只写成 1,整串就从八位变成七位,和后面那段粘在一起。
32 位无符号整数:((a × 256 + b) × 256 + c) × 256 + d,等价于按位左移后相加。代入 192.168.1.1 得 ((192×256+168)×256+1)×256+1 = 3232235777。反向也简单:Math.floor(n / 16777216) 得第一段,Math.floor(n / 65536) % 256 得第二段,Math.floor(n / 256) % 256 得第三段,n % 256 得第四段。
类别判定只看第一段:小于 128 是 A 类,小于 192 是 B 类,小于 224 是 C 类,小于 240 是 D 类(组播),其余是 E 类(保留)。这是 1981 年定下的有分类编址规则,今天虽然已被无分类域间路由取代,但首段判断类别依然是排查问题时最快的抓手。
用途判定要同时看前两段:172.16.0.0/12 只覆盖 172.16 到 172.31,所以见到 172.200.x.x 仍是公网;100.64.0.0/10 只覆盖 100.64 到 100.127;其余私有段、环回、链路本地、组播、保留段都只看第一段即可判定。
完整示例(默认输入实测)
示例条件与页面默认值完全一致:IPv4 → 各进制模式,输入 192.168.1.1。逐段核对——192 = 128 + 64 = 11000000,168 = 128 + 32 + 8 = 10101000,1 = 00000001,1 = 00000001;二进制一行写作 11000000 10101000 00000001 00000001。十六进制逐段是 c0、a8、01、01,连写大写得 C0A80101。整数代入 ((192×256+168)×256+1)×256+1 = 3232235777。类别上 192 落在 192~223,是 C 类;用途上前两段 192.168 命中 RFC 1918 的 192.168.0.0/16,标注为私有地址。
换几个地址验证边界与常见值:
- 8.8.8.8:四段相同,二进制 00001000 00001000 00001000 00001000,十六进制 08080808,整数 134744072,A 类公网单播;
- 255.255.255.255:二进制 32 个 1,十六进制 FFFFFFFF,整数 4294967295,正是 32 位无符号整数的上限;
- 0.0.0.0:二进制 32 个 0,十六进制 00000000,整数 0,标注为本网络与未指定地址;
- 127.0.0.1:二进制 01111111 00000000 00000000 00000001,十六进制 7F000001,整数 2130706433,标注为环回地址;
- 172.16.254.3:二进制 10101100 00010000 11111110 00000011,整数 2886794755,第二段 16 落在 16~31,判为 B 类私有。
反向模式同样可复算:输入 3232235777,先算 3232235777 ÷ 16777216 取整得 192,余数依次取出 168、1、1,还原成 192.168.1.1,与正向结果完全对上,说明两个方向的公式是同一件事的两种写法。
需要提醒:结果区的二进制段间空格只是阅读分隔,复制出来粘到代码里时若不需要空格,请自行去掉;整数形式在复制时是纯数字,没有千位分隔符,方便直接粘贴进配置文件。
常见地址段对照表
下表共 14 行,默认显示前 12 行,点「加载更多(还有 2 行)」展开最后两条公共 DNS。前 10 行是各类保留地址段,最后 4 行是日常排错最常 ping 的公共 DNS。表格可直接导出 CSV 或按 TSV 复制。
读这张表要抓住一条主线:「类别」由首段决定,「用途」常常要再看一段。172 开头的地址首段都落在 128~191 的 B 类区间,但只有 172.16 到 172.31 这十六个第二段属于私有,172.32 往后都是公网。把这两列连起来看,就不会出现「见到 172 就当内网」的误判。
表里的「公共 DNS」四行是具体地址而不是地址段,填进上方输入框可以直接看到它们的二进制与整数形式:8.8.8.8 的二进制四段完全相同,是最容易验证转换是否正确的样本。表里没有列出的地址,用上方计算器任意输入同样算得出来。
结果边界与舍入
- 空输入。输入框为空时点转换,会提示「IPv4 地址是空的」或「十进制整数是空的」,并说明当前模式要求的格式,不会静默按 0 处理。
- 段数不对。写成 192.168.1 或 192.168.1.1.1 时,会明确读出「它分成 3 段而不是 4 段」,并给出正确写法示例。
- 含非数字字符。某一段里出现字母、空格、负号或中文标点时,会指出是第几段、读到了什么,并要求每段只能是 0~255 的纯数字。
- 前导零。192.168.001.1 会被拒。前导零在 BSD 传统的 inet_aton 里被当作八进制,003 会被解成 3,同一串字符有两种含义,本页统一按十进制并不接受前导零,单独的 0 除外。
- 单段越界。某段等于 256 或更大时,会提示「第 k 段等于 N,超出单段上限 255」,而不是把超出的部分截掉。
- 整数越界。反向模式只接受 0~4294967295。4294967296 会越界,因为 32 位无符号整数的最大值就是 2 的 32 次方减一。双精度浮点能精确表示到 2 的 53 次方,所以这个区间内的任何整数都不会丢精度。
- 全程本地。转换只在当前浏览器里做,不发起网络请求,不写 Cookie 和 localStorage,关掉页面什么都不剩。
常见问题
192 为什么等于二进制 11000000?
192 = 128 + 64,对应二进制第 8 位和第 7 位为 1,其余为 0,写出来就是 11000000。同理 168 = 128 + 32 + 8,二进制是 10101000。转换时可以按 128、64、32、16、8、4、2、1 八个权值从高到低试减,减得了记 1,减不了记 0。
为什么不允许写 192.168.001.1?
因为带前导零的段在历史上被某些解析库当成八进制,003 会被解成 3,也有库坚持按十进制解成 3,还有库直接报错。同一串字符有三种下场,本页为了消除歧义,统一按十进制解析并拒绝前导零,只允许单独的 0。
整数形式最大能到多少?
IPv4 的整数形式是 32 位无符号整数,最大 4294967295,对应 255.255.255.255,最小 0,对应 0.0.0.0。整个区间在双精度浮点里都能精确表示,因为双精度浮点的整数精确上限是 2 的 53 次方,远大于 2 的 32 次方。
私有地址和公网地址怎么区分?
看首两段。10.x.x.x 整段私有;172.16.x.x 到 172.31.x.x 私有;192.168.x.x 私有,这三段合起来就是 RFC 1918。此外 127.x.x.x 是环回、169.254.x.x 是链路本地、100.64~100.127 是运营商级 NAT,都不会作为公网主机地址出现在互联网上。
支持 IPv6 吗?
不支持。IPv6 是 128 位,标准写法是八组四位十六进制用冒号分隔,还有前导零压缩和双冒号省略规则,压缩还原的逻辑和 IPv4 完全不同,混在一个页面里只会让两边都说不清。本页只处理 IPv4。
十六进制为什么每段要补零到两位?
因为十六进制是按字节组织的,一个字节恰好两位十六进制数。1 的十六进制是 1,不补零就只占一位,连写时 C0A801 会变成七位,后面的段会整体错位。补零之后每段固定两位,四段连写恒为八位,肉眼一数就知道有没有漏。
这个工具能做子网划分吗?
不能。本页只做三种表示之间的互转,不涉及掩码、网络地址、广播地址和可用主机数的计算。那些计算需要先确定前缀长度,再对二进制做按位与,属于另一类工具。把本页给出的二进制结果作为手工推演的起点是安全的。
我的数据会被上传吗?
不会。所有转换只在当前浏览器本地执行,页面不发起任何网络请求,也不写 Cookie 或 localStorage。打开开发者工具的 Network 面板连点几次转换,记录始终是空的。
相关工具
- 数字转比特转换器:十进制整数转二进制位串,位运算前的准备工作。
- 正则替换工具:批量改写日志里的 IP 字段时很顺手。
- CSV转Markdown表格:把导出的地址段表贴进文档。
- JSON转Go Struct:把含整数 IP 字段的接口定义翻成结构体。
- 开发者工具:查看全部编码、格式与文本处理工具。