IP 转十进制

点分↔十进制↔Hex↔二进制

415 次访问
IP ↔ INTEGER CONVERTER

IP 转十进制 / 二进制 / 十六进制

IPv4 ↔ uint32 整数 · 数据库存储优化 / GeoIP 查询必备

输入

转换结果

输入后实时显示

用途与公式

公式:IPv4 = (A × 2^24) + (B × 2^16) + (C × 2^8) + D。即 192.168.1.1 = 192 × 16777216 + 168 × 65536 + 1 × 256 + 1 = 3232235777

数据库优化:用 INT UNSIGNED (4 字节) 存 IP 比 VARCHAR(15) (15+ 字节) 省 ~70% 空间,索引更快。

GeoIP 查询:IP 段表用 [start_int, end_int] 区间查询,O(log n) 索引扫描,远快于字符串比较。

关于本工具

了解工具定位 · 使用场景 · 对比优势

在点分十进制、十进制、十六进制和二进制四种格式间互转 IP 地址。网络工程师排查路由表、运维人员配置防火墙规则、开发者在代码里处理 IP 数据时,省去手动换算的麻烦。所有转换在浏览器本地完成,IP 地址不上传服务器。

使用场景

🌐

网络工程师排障

网络工程师在排查路由表或防火墙日志时,经常看到类似 3232235521 的十进制 IP。手动换算成点分十进制(如 192.168.1.1)非常耗时且易出错。本工具支持一键将十进制 IP 转回点分格式,同时提供十六进制和二进制对照,帮助快速定位设备地址,缩短故障排查时间。

🔐

安全审计查IP

安全分析人员从攻击日志中提取到一串十进制数字(如 2886729731),需要确认其对应的公网 IP。本工具即时转换并显示点分十进制与十六进制,便于在威胁情报平台中交叉查询。无需手动计算,避免因换算错误导致遗漏攻击源。

🎓

计算机网络教学

计算机专业学生在学习 IP 地址结构时,需要理解点分十进制、二进制、十六进制之间的转换关系。教师可借助本工具现场演示:输入 192.168.1.1,立即看到其二进制 11000000.10101000.00000001.00000001 和十六进制 C0A8:0101,直观展示各进制对应关系,辅助课堂讲解。

📋

IP段批量计算

运维人员在做子网划分或 ACL 配置时,需要将多个点分十进制 IP 转为十进制以便在脚本或数据库中比较大小。本工具支持逐个输入转换,结果可复制粘贴到文本中。相比手动用计算器逐位换算,大幅提升批量处理效率,减少人为计算错误。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (ipaddress.com)传统方法 (计算器/手算)
数据隐私纯浏览器,零上传上传到服务器处理完全本地,但依赖人工操作
处理速度1 秒内2-5 秒(含网络延迟)10 秒至数分钟(视熟练度)
离线可用完全离线需联网完全离线(需计算器/纸笔)
格式覆盖点分 ↔ 十进制 ↔ Hex ↔ 二进制点分 ↔ 十进制为主需手动换算,易出错
批量处理单次单 IP单次单 IP可批量但极耗时
操作门槛输入即出,零学习成本输入即出需理解进制换算原理
收费免费免费免费(仅需计算器)
注册无需注册无需注册无需注册

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 在「点分十进制」输入框粘贴 IP 地址(如 192.168.1.1),或直接输入数字
  2. 点击「十进制」按钮,工具自动计算并显示对应的十进制整数
  3. 点击「Hex」按钮查看十六进制值,点击「二进制」按钮查看二进制值
  4. 点击任意结果旁的「复制」图标,将对应格式的值复制到剪贴板

输入输出示例8 个典型场景,覆盖常规、边界与易错

输入输出说明
192.168.1.1十进制: 3232235521 十六进制: 0xC0A80101 二进制: 11000000101010000000000100000001典型场景:家庭局域网常用地址
10.0.0.1十进制: 167772161 十六进制: 0x0A000001 二进制: 00001010000000000000000000000001典型场景:A 类私有地址段常用网关
255.255.255.255十进制: 4294967295 十六进制: 0xFFFFFFFF 二进制: 11111111111111111111111111111111边界 case:IPv4 最大值(广播地址)
0.0.0.0十进制: 0 十六进制: 0x00000000 二进制: 00000000000000000000000000000000边界 case:IPv4 最小值(默认路由)
127.0.0.1十进制: 2130706433 十六进制: 0x7F000001 二进制: 01111111000000000000000000000001典型场景:本地回环地址(localhost)
3232235521点分十进制: 192.168.1.1 十六进制: 0xC0A80101 二进制: 11000000101010000000000100000001易错 case:直接输入十进制数自动反向转换
0xC0A80101点分十进制: 192.168.1.1 十进制: 3232235521 二进制: 11000000101010000000000100000001易错 case:输入十六进制前缀 0x 自动识别
256.1.1.1错误:每段数值必须在 0-255 之间边界 case:输入超范围数值触发校验

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 输入了非点分十进制的 IP 格式

错误
192.168.1.1/24
修复
192.168.1.1

工具只处理单个 IP 地址的点分十进制、十进制、Hex 或二进制之间的互转,不支持 CIDR 前缀(/24)或其他子网掩码格式

2. 在十进制输入中混入了点号

错误
3232235521.0
修复
3232235521

十进制 IP 是一个 0~4294967295 的整数,不含点号。带点号会被解析为非法格式,导致转换失败或错误

3. 十六进制输入缺少 0x 前缀或位数不对

错误
C0A80101
修复
0xC0A80101

工具要求 Hex 输入以 0x 开头(不区分大小写),且必须是 8 位十六进制数(不含点)。缺少前缀或位数不足会被当作其他格式处理

4. 二进制输入位数不是 32 位

错误
110000001010100000000001
修复
11000000101010000000000100000001

IPv4 二进制表示固定 32 位,不足 32 位时工具无法确定高位补 0 还是截断,必须补全到 32 位

5. 把十进制 IP 理解成点分十进制中的某一段

错误
192
修复
3232235521

十进制模式要求输入整个 IP 的十进制数值,不是点分十进制中的某一段(如 192)。192 是点分十进制中第一段,对应十进制是 3232235521

6. 输入了 IPv6 地址

错误
2001:db8::1
修复
192.168.1.1

该工具仅支持 IPv4 格式转换。IPv6 地址(128 位)结构完全不同,无法用此工具处理

7. 在点分十进制中使用了前导零

错误
192.168.001.001
修复
192.168.1.1

部分系统允许前导零,但非标准。工具按严格点分十进制解析,前导零可能导致被解释为八进制(如 010=8)或直接报错

8. 混淆了十六进制输出与输入格式

错误
输入 0xC0A80101 后,把输出的 3232235521 又当作十六进制输入
修复
确认输出格式:Hex 输入 → 十进制输出;十进制输入 → Hex 输出

工具双向转换,输出格式由输入格式决定。若输入是 Hex,输出是十进制数;若想得到 Hex 结果,需输入十进制或点分十进制

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

D = d_3 × 256^3 + d_2 × 256^2 + d_1 × 256 + d_0

变量说明

  • D — 十进制整数(0~4294967295)
  • d_3 — 点分十进制的第一段(高位)
  • d_2 — 点分十进制的第二段
  • d_1 — 点分十进制的第三段
  • d_0 — 点分十进制的第四段(低位)

示例

IP 地址 192.168.1.10 → d_3=192, d_2=168, d_1=1, d_0=10。D = 192×256^3 + 168×256^2 + 1×256 + 10 = 192×16777216 + 168×65536 + 256 + 10 = 3221225472 + 11010048 + 266 = 3232235786。

适用范围

适用于标准 IPv4 地址(0.0.0.0~255.255.255.255),基于 IETF RFC 791 定义。不适用于 IPv6 地址或非点分格式(如 CIDR 表示法)。

原理图

输入 IP点分十进制如 192.168.1.1浏览器内计算解析 4 段数字按位权 256^n 计算无网络请求输出结果十进制 / Hex二进制输入十进制如 3232235777浏览器内计算连续除以 256取余数得到 4 段无网络请求输出结果点分十进制Hex / 二进制
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import socket
import struct

# 点分十进制 → 十进制整数
ip_str = "192.168.1.1"
packed = socket.inet_aton(ip_str)
int_val = struct.unpack("!I", packed)[0]
print(int_val)  # 3232235777

# 十进制整数 → 点分十进制
int_val = 3232235777
packed = struct.pack("!I", int_val)
ip_str = socket.inet_ntoa(packed)
print(ip_str)  # 192.168.1.1

# 十进制 → 十六进制
print(hex(int_val))  # 0xc0a80101

# 十进制 → 二进制
print(bin(int_val))  # 0b11000000101010000000000100000001
package main

import (
	"fmt"
	"net"
	"strconv"
	"strings"
)

func ipToInt(ip string) uint32 {
	parts := strings.Split(ip, ".")
	var result uint32
	for _, p := range parts {
		n, _ := strconv.Atoi(p)
		result = result*256 + uint32(n)
	}
	return result
}

func intToIP(n uint32) string {
	return fmt.Sprintf("%d.%d.%d.%d",
		byte(n>>24), byte(n>>16), byte(n>>8), byte(n))
}

func main() {
	ip := "192.168.1.1"
	intVal := ipToInt(ip)
	fmt.Println(intVal) // 3232235777

	fmt.Println(intToIP(intVal)) // 192.168.1.1
	fmt.Printf("%x\n", intVal)  // c0a80101
	fmt.Printf("%b\n", intVal)  // 11000000101010000000000100000001

	// 使用标准库 net.ParseIP
	parsed := net.ParseIP(ip).To4()
	if parsed != nil {
		fmt.Println(parsed) // 192.168.1.1
	}
}
// 点分十进制 → 十进制整数
function ipToInt(ip) {
  return ip.split('.').reduce((acc, octet) => acc * 256 + parseInt(octet, 10), 0);
}

// 十进制整数 → 点分十进制
function intToIp(intVal) {
  return [
    (intVal >>> 24) & 255,
    (intVal >>> 16) & 255,
    (intVal >>> 8) & 255,
    intVal & 255
  ].join('.');
}

const ip = '192.168.1.1';
const intVal = ipToInt(ip);
console.log(intVal);          // 3232235777
console.log(intToIp(intVal)); // 192.168.1.1
console.log(intVal.toString(16)); // 'c0a80101'
console.log(intVal.toString(2));  // '11000000101010000000000100000001'

常见问题

8 个高频疑问

这个 IP 转十进制工具怎么用?输入格式有什么要求?
打开页面后,在输入框中直接输入点分十进制 IP(如 192.168.1.1),工具会自动转换成十进制、十六进制和二进制结果。也支持反向转换:输入十进制整数(如 3232235777)会自动转回点分 IP。注意:IPv6 地址不支持;输入必须为完整的 4 段点分 IP 或纯整数,不能带子网掩码(如 192.168.1.1/24)或端口号。如果输入非法字符或格式不对,结果区会显示红色提示,不会输出错误数据。
转换出来的十进制数为什么和我手动算的不一样?
常见原因是点分 IP 的段序理解错误。标准算法是:第一段 ×256³ + 第二段 ×256² + 第三段 ×256 + 第四段。例如 192.168.1.1 = 192×16777216 + 168×65536 + 1×256 + 1 = 3232235777。如果手动算时把段序搞反(比如 1×16777216 + 1×65536 + 168×256 + 192),结果会完全不同。另外注意:IP 地址十进制转换是数学计算,不存在精度误差,如果结果不一致,100% 是手动计算或输入错了。
这个工具支持 IPv6 转十进制吗?
不支持。IPv6 地址长度是 128 位,十进制数最大约 3.4×10³⁸,远超 JavaScript 安全整数范围(2⁵³-1),纯前端无法精确表示。如果需要 IPv6 转十进制,建议使用后端处理的专用工具(如本站 ipv6-int 工具)。本工具只处理标准 IPv4 地址(0.0.0.0 - 255.255.255.255)及对应的十进制数(0 - 4294967295)。输入超出范围的十六进制或二进制也会提示非法。
私有 IP 地址(如 10.x.x.x、192.168.x.x)转换后有什么特殊含义吗?
没有特殊含义,转换算法对所有 IP 一视同仁。私有 IP 的十进制数同样落在 0-4294967295 范围内,只是实际网络中不可路由。例如 10.0.0.1 = 167772161,这个数值本身没有保留或限制,但反向转换时输入 167772161 会得到 10.0.0.1,不会因为它是私有段就拒绝转换。如果你需要判断某个 IP 是否属于私有/保留段,建议搭配 IP 归属地或 IP 类型查询工具使用。
转换结果中的十六进制和二进制有什么用?我只看十进制就够了。
十六进制和二进制在特定场景下非常实用。十六进制格式常用于配置路由器 ACL(访问控制列表)或防火墙规则(如 0xC0A80101 比 192.168.1.1 更紧凑)。二进制格式适合网络工程师排查子网划分问题,能直观看到网络位和主机位的边界(如 11000000.10101000.00000001.00000001)。如果你只关心十进制数,忽略其他两列即可,工具不会强制使用这些结果。
这个工具在断网环境下还能用吗?
能。本工具是纯前端实现,所有计算代码和界面资源已随页面加载到浏览器中。一旦页面打开并加载完成,即使断开网络,刷新页面或重新输入 IP 也能正常转换。可以打开浏览器的 DevTools → Network 标签验证:输入 IP 并点击转换时,没有任何 HTTP 请求外发。这意味着你输入的 IP 地址不会离开你的电脑,适合处理敏感内网 IP 或离线环境。
输入 0.0.0.0 或 255.255.255.255 这种边界值会报错吗?
不会报错,工具能正确处理所有合法 IPv4 地址边界值。0.0.0.0 转换后十进制为 0,十六进制为 0x00000000,二进制为 00000000.00000000.00000000.00000000;255.255.255.255 转换后十进制为 4294967295,十六进制为 0xFFFFFFFF,二进制为 11111111.11111111.11111111.11111111。注意:十进制输入必须 ≤ 4294967295,输入 4294967296 或更大数值会提示非法,因为超出 IPv4 地址空间上限。
为什么我用其他网站转出来的十进制数,和这个工具不一样?
大概率是输入格式差异。有些工具会把 IP 当作字符串处理,自动去除前导零(如 192.168.001.001 变成 192.168.1.1),本工具则严格按原始输入计算。另外,少数工具支持带子网掩码的输入(如 192.168.1.1/24),转换时会自动忽略掩码部分,本工具遇到 / 符号会报错,需要先去掉掩码再输入。建议对比时确保两端输入完全一致(包括无前导零、无空格、无掩码)。如果仍不一致,可以用 Windows 计算器手动验证:将 IP 各段分别乘以 256^(3-n) 后相加。
选择 打开 +新窗口 esc关闭