Appearance
实现 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-input、el-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 效果截图
