Go语言实现IP转长整型函数详解

叶初
叶初
发布时间:2026-10-14| 3人浏览过
原创

在Go语言开发中,有时需要将IPv4地址字符串转换为单一的整数表示以便存储或计算。本文将介绍一种基于字符串处理与位运算思想的实现方案,帮助开发者快速理解其原理。

实现目标与原理

IPv4地址由四个0到255之间的整数组成,用点号分隔。将其转换为长整型的本质是将这四个部分视为一个32位的二进制数的高低位部分。
本例中的实现思路是:

  1. 以点号为分隔符切分IP地址字符串。
  2. 逐段解析为十进制整数。
  3. 将每个整数格式化为8位二进制字符串。
  4. 拼接成完整的32位二进制字符串并转为整数。

代码实现

以下是核心函数代码。请注意,该实现侧重于逻辑演示,并未包含对IP格式合法性的严谨校验。

package main

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

// Ip2Long 将IP地址转换为长整型字符串返回
// 注意: 该函数不会对 IP 的合法性进行校验
func Ip2Long(ip string) (ips string) {
	var ip_pieces = strings.Split(ip, ".")
	ip_1, _ := strconv.ParseInt(ip_pieces[0], 10, 32)
	ip_2, _ := strconv.ParseInt(ip_pieces[1], 10, 32)
	ip_3, _ := strconv.ParseInt(ip_pieces[2], 10, 32)
	ip_4, _ := strconv.ParseInt(ip_pieces[3], 10, 32)
	var ip_bin string = fmt.Sprintf("%08b%08b%08b%08b", ip_1, ip_2, ip_3, ip_4)
	ip_int, _ := strconv.ParseInt(ip_bin, 2, 64)
	return
}

关键步骤说明

第一步:拆分IP地址。入口为标准格式的IP字符串(如"192.168.1.1"),动作是使用 strings.Split 配合分隔符 . 将其分为数组。

第二步:解析数字段。使用 strconv.ParseInt 依次获取四个部分的整数值。由于本例省略了错误检查,若输入非法字符可能会产生默认值,生产环境中建议加入 err 判断。

第三步:格式化为二进制。利用 fmt.Sprintf 和格式化占位符 %08b,确保每个整数都占据8个二进制位(不足补零),从而实现无缝拼接。

第四步:生成最终结果。将拼接后的二进制串再次解析为64位整数,并以字符串形式返回。

注意事项

在实际项目中直接使用此代码前,请务必补充对 ip_pieces 长度的判断以及对 ParseInt 返回错误的处理。此外,由于返回值类型为 string,如需进行数学运算,调用方需自行转换回数值类型。

以上就是Go语言版ip2long函数的详细内容,更多关于Go语言网络编程的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。