Skip to content

实现 Ipv4Convert 工具

分类:developer | 标签:IPv4、转换、整数 IPv4 点分十进制与整数互转

2.1 功能说明

IPv4 点分十进制与整数互转

2.1.1 使用指南

功能说明

IPv4 点分十进制与 32 位整数互转,也可获取各段(A/B/C 类段)的二进制表示。

使用场景

网络调试、ACL 配置、数据库存储 IP 为整数。

2.2 代码实现

2.2.1 组件结构

本工具是一个基于 Vue 3 <script setup> 语法的单文件组件(SFC),统一包裹在 ToolPageShell 组件内,由它提供页面标题、工具 ID、分类与「使用指南」插槽等通用外壳;核心业务逻辑(响应式状态、计算属性、事件处理函数)全部写在 <script setup> 中,输入/输出通过 el-inputel-button 等 Element Plus 组件与用户交互,所有数据均在浏览器本地处理,不会上传服务器。

2.2.2 核心逻辑概览

<script setup> 中定义的主要函数/方法:

  • ipToInt()
  • intToIp()
  • toInt()
  • toIp()
  • clear()

2.2.3 关键实现代码

以下是该工具的完整 <script setup> 实现(核心代码)。模板(<template>)与样式(<style>)已省略。

vue
import { ref } from 'vue'
import ToolPageShell from '@/components/ToolPageShell.vue'

const ip = ref('')
const intVal = ref('')
const error = ref('')
const result = ref(null)

function ipToInt(a) {
  const p = a.split('.')
  if (p.length !== 4) return null
  let n = 0
  for (let i = 0; i < 4; i++) {
    const o = Number(p[i])
    if (!Number.isInteger(o) || o < 0 || o > 255) return null
    n = (n << 8) | o
  }
  return n >>> 0
}
function intToIp(n) {
  return [(n >>> 24) & 255, (n >>> 16) & 255, (n >>> 8) & 255, n & 255].join('.')
}
function toInt() {
  error.value = result.value = null
  const ai = ipToInt(ip.value.trim())
  if (ai === null) { error.value = 'IPv4 格式不正确'; return }
  result.value = { int: String(ai), ip: ip.value.trim(), bin: ai.toString(2).padStart(32, '0') }
}
function toIp() {
  error.value = result.value = null
  const v = Number(intVal.value.trim())
  if (!Number.isInteger(v) || v < 0 || v > 4294967295) { error.value = '整数须在 0~4294967295 之间'; return }
  result.value = { int: String(v), ip: intToIp(v), bin: v.toString(2).padStart(32, '0') }
}
function clear() { ip.value = intVal.value = error.value = result.value = null }

2.3 效果截图

Ipv4Convert 效果截图

工具访问地址:https://www.i91tools.com/tools/ipv4-convert