Python将十进制整数转换为IP地址的实现方法

凌晨两点半
凌晨两点半
发布时间:2026-10-13| 5人浏览过
原创

本文介绍在Python中将十进制整数转换为IPv4地址的方法。通过将整数转为32位二进制,按8位分组并转换为十进制,可生成标准IP格式。文中提供直接实现与函数封装两种代码示例,验证转换结果的正确性。

十进制与IP地址转换原理

在计算机网络中,IP地址通常以点分十进制形式表示,但其底层存储为32位整数。因此,实现十进制数与IP地址的双向转换具有重要意义。例如,将IP地址转换为对应的十进制数后,通过ping命令测试该十进制数若能通,则证明转换功能已正确实现。

具体实现逻辑如下:首先利用Python内置格式化方法将十进制整数转换为二进制字符串,若不足32位则在左侧补零。接着使用正则表达式将二进制串按每8位分割,将每组二进制数转换为十进制,并用点号连接。

Python直接实现代码


# 引用正则来三等分字符串
import re

# 转换成二进制数
bi = "{0:b}".format(18223104)
# 补齐32位
bi = "0"*(32-len(bi))+bi
# 8个一组算出每8个数字的十进制,然后再加“,”分隔
ret_ip_string = '.'.join(list(map(lambda x:str(int(x,2)),re.findall(r'.{8}',bi))))
# 打印ip字符串
print(ret_ip_string)

为了提升代码复用性,可将上述逻辑封装为独立函数。调用该函数并传入目标十进制整数,即可直接获取对应的IP地址字符串,便于在脚本或项目中多次调用。

函数封装与调用示例


def int32_to_ip(int32):
  import re
  bi = "{0:b}".format(int32)
  bi = "0" * (32 - len(bi)) + bi

  ret_ip_string = '.'.join(list(map(lambda x: str(int(x, 2)), re.findall(r'.{8}', bi))))
  return ret_ip_string

if __name__ == '__main__':
  ip = int32_to_ip(18223104)
  print(ip)

以上内容展示了Python实现十进制转IP的核心逻辑与封装技巧。希望这些示例能对读者理解网络地址转换机制有所帮助,也欢迎持续关注本站获取更多技术分享。

相关标签:

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

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 算法库。