当前位置: 首页 > java >正文

【205】Python3 实现整数和IP地址字符串互相转换

解释 IP 地址字符串

IP地址是由三个点分割出的四个数字组成,每个数字的取值范围是 0 到 255(包含 0 和 255)。每个数字都可以转换为一个 8 位的二进制数字。一共 4 个 8 位二进制数字,拼接在一起恰好就是一个 32 位的整数。

IP字符串转换成整数

当 IP 转换为 32 位整数的时候,对字符串分割,切成 4 个数字。

从左往右算:

第 1 个数字二进制左移 8 * 3 = 24 位。

第 2 个数字二进制左移 8 * 2 = 16 位。

第 3 个数字二进制左移 8 位。

第 4 个数字不做移位操作。

最后把四个数字相加,就是从IP字符串转换成的整数。

整数转换成 IP 地址字符串

当整数转换为 IP 地址字符串的时候,32 位的二进制整数分成 4 个 8 位二进制数字,使用按位与取出四个数字的值,然后转换成字符串,由三个点连接在一起。把 4 个数字从左到右划为第一到第四,做如下操作:

第 4 个数字,输入的整数和 255 做按位与,255 是二进制的 11111111(8 个 1),因为高位是0,按位与操作只有低 8 位能取值,其他高位都是0。

第 3 个数字,输入的整数二进制右移 8 位和 255 做按位与,获得数字。

第 2 个数字,输入的整数二进制右移 8 * 2 = 16 位和 255 做按位与,获得数字。

第 1 个数字,输入的整数二进制右移 8 * 3 = 24 位和 255 做按位与,获得数字。

最后把四个数字转换成字符串,中间间隔三个点,拼接在一起就是 IP 地址字符串。

# BEGIN ipToInt(ip)
def ipToInt(ip):ipArr = ip.split(".")ipInt_1 = int(ipArr[0])ipInt_2 = int(ipArr[1])ipInt_3 = int(ipArr[2])ipInt_4 = int(ipArr[3])ipInt_1 = ipInt_1 << (8 * 3)ipInt_2 = ipInt_2 << (8 * 2)ipInt_3 = ipInt_3 << (8 * 1)result = ipInt_1 + ipInt_2 + ipInt_3 + ipInt_4return result
# END   ipToInt(ip)# BEGIN intToIp(num)
def intToIp(num):ipInt_4 = num & 255ipInt_3 = (num >> 8) & 255ipInt_2 = (num >> (8 * 2)) & 255ipInt_1 = (num >> (8 * 3)) & 255ipStr_1 = str(ipInt_1)ipStr_2 = str(ipInt_2)ipStr_3 = str(ipInt_3)ipStr_4 = str(ipInt_4)return ipStr_1 + "." + ipStr_2 + "." + ipStr_3 + "." + ipStr_4
# END   intToIp(num)a = ipToInt("255.255.255.255")
print(a)
ip = intToIp(a)
print(ip)
http://www.xdnf.cn/news/2781.html

相关文章:

  • 【读书笔记】机器行为与具身智能
  • pywinauto操作Windows应用
  • VUE3:封装一个评论回复组件
  • 【环境配置】Mac电脑安装运行R语言教程 2025年
  • 如何评价 DeepSeek 的 DeepSeek-V3 模型?
  • 【优选算法 | 二分查找】二分查找算法解析:如何通过二段性优化搜索效率
  • Python项目-支持自然语言处理
  • Docker和K8s面试题
  • Nacos 3.0 上线 MCP Registry,支持 MCP 服务注册到发现全流程管理
  • 从零开始学习车联网相关知识-学习计划
  • YUM/DNF管理工具
  • 蓝桥杯2025年第十六届省赛真题-可分解的正整数
  • 使用Optional优雅处理Null检查
  • 赋能航天教育:高校卫星仿真教学实验平台解决方案
  • Github两种鉴权模式PAT与SSH
  • CMU-15445(1)——环境搭建
  • python上测试neo4j库
  • 注意力机制:从 MHA、MQA、GQA、MLA 到 NSA、MoBA
  • Mysql索引
  • LeetCode【剑指offer】系列(动态规划篇)
  • VBA快速创建Excel中数据模型的数据连接
  • C++ 部署的性能优化方法
  • 网络拓扑模型相关题目-1
  • Lustre/Scade 语言时序算子与形式化验证的联系
  • 从暴力到优化:解决「分数严格小于k的子数组数目」问题
  • 硬件加密+本地部署,大模型一体机如何打造AI安全护城河?
  • terraform plan和apply的区别
  • 声纹监测技术在新能源汽车的应用场景解析
  • Volcano 进阶实战 (三) - (多集群 / 离线混部)调度
  • windows程序转鲲鹏服务器踩坑记【持续更新中】