Python中转换IP地址格式的方法

IP地址一般用字符串“XXX.XXX.XXX.XXX”表示。例如,“192.168.147.1”、“127.0.0.1”等。在确定主机IP地址段时,需要将IP地址的每段转换成数字。

1 inet_aton()方法

该方法的使用方法是

socket.inet_aton(ip_string)

其中,参数ip_string是字符串类型的IP地址,该字符串的格式是“XXX.XXX.XXX.XXX”。inet_aton()方法的返回值类型是bytes,包含了四段数字对应的十六进制数。使用inet_aton()方法对IP地址格式进行转换的代码如下所示:

host_name = socket.gethostname()
ip_addr = socket.gethostbyname(host_name)
packed_ip_addr = socket.inet_aton(ip_addr)
print(ip_addr)
print(packed_ip_addr)

以上代码中,通过gethostname()方法获取主机名;之后通过gethostbyname()获取主机的IP地址,此时的IP地址是“XXX.XXX.XXX.XXX”的字符串;接下来通过inet_aton()方法将IP地址格式转换为bytes类型;最后打印出来的两种格式的IP地址,如图1所示。

图1 两种格式的IP地址

从图1可以看出,bytes类型的变量packed_ip_addr包含4个byte类型的元素,其中“\xc0”是十六进制格式的数字,其对应的十进制值位192,“\xa8”对应的十进制值是168,以此类推。可以通过下标访问packed_ip_addr中的四个元素,例如packed_ip_addr[1]表示第二个元素,即\xa8,也就是168。

相关链接1 gethostname()方法和gethostbyname()方法的用法,请参考Python中获取主机名和IP地址的方法_棉猴的博客-CSDN博客

2 inet_ntoa()方法

该方法将bytes格式的IP地址转换为“XXX.XXX.XXX.XXX”的字符串格式,其使用方法为

socket.inet_ntoa(bytes)

inet_ntoa()方法的返回值是“XXX.XXX.XXX.XXX”格式的字符串。使用该方法的代码如下所示。

unpacked_ip_addr = socket.inet_ntoa(packed_ip_addr)
print(unpacked_ip_addr)

其中,packed_ip_addr是“1 inet_aton()方法”中得到的bytes类型的IP地址。以上代码运行的效果如图2所示。

图2 “XXX.XXX.XXX.XXX”格式的IP地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/115198.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

商业综合体AI+视频安防监控与智能监管解决方案

一、方案背景 商业综合体需要具备更好的品质和环境才能吸引更多客流,如何有效地进行内部管理、外部引流,是综合体管理人员思考的重点。 传统的视频监控需要靠人盯牢屏幕或者发生报警后通过查看录像,才能找到意外事件相关人员与起因&#xf…

RocketMQ 源码分析——Producer

文章目录 消息发送代码实现消息发送者启动流程检查配置获得MQ客户端实例启动实例定时任务 Producer 消息发送流程选择队列默认选择队列策略故障延迟机制策略*两种策略的选择 技术亮点:ThreadLocal 消息发送代码实现 下面是一个生产者发送消息的demo(同步发送&#…

2023华为杯E题:出血性脑卒中临床智能诊疗建模(不断更新)

文章目录 一、 背景介绍二、 数据集介绍及建模目标第一题:血肿扩张风险相关因素探索建模。第一问要求第一问解题思路第二问第二问解体思路 第二题:血肿周围水肿的发生及进展建模,并探索治疗干预和水肿进展的关联关系第一问第一问思路第二问第…

Mojo编程语言是AI人工智能的新的编程语言

Mojo是Chris Lattner的创业公司Modular开发的一种新的编程语言,旨在统一AI基建和异构计算。Mojo被认为是Python的超集,兼容Python生态,但添加了系统编程和编译期优化的特性,以提高性能和部署效率。Mojo基于MLIR,可以支…

2、Elasticsearch 基础功能

第3章 Elasticsearch 基础功能 以 8.X 版本为基础通过 Kibana 软件给大家演示基本操作。 3.1 索引操作 3.1.1 创建索引 ES 软件的索引可以类比为 MySQL 中表的概念,创建一个索引,类似于创建一个表。 查询完成后,Kibana 右侧会返回响应结果及请…

【C语言】结构体内存对齐机制详解

目录 一、前言二、结构体内存对齐规则三、实例解析 一、前言 在讲解结构体内存对齐机制之前,我们先来看1个例子: typedef struct {char sex; // 性别int id; // 学号char name[20]; // 姓名float score; // 成绩char addr[30]; …

基于HTML5架构的综合管廊系统网络结构设计

摘 要:从网络拓扑结构、开放式实时以太网协议、控制层系统配置方面介绍了综合管廊的系统网络架构设计,分析了无线网络特性,阐述了基于HTML5架构所能实现的功能的初步构想,以便于综合管廊运维人员巡检,确保管廊本体安全…

基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(七)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 模型训练1)数据集分析2)数据预处理3)模型创建4)模型训练5)获取特征矩阵 2. 后端Django3. 前端微信小程序1)小程序全局配置文件2&#xff09…

怎样找到NPM里面开源库下载地址

场景 最近帮忙找一个开源库地址。这里以vue/language-core为例子。 解决 https://registry.npmmirror.com/vue/language-core/1.8.13这里就是如下格式: https://registry.npmmirror.com/{包名}/{版本号}打开这个页面后,得到开源库下载地址&#xff0c…

使用Postman如何在接口测试前将请求的参数进行自定义处理

1、前言 当我们使用 Postman 进行接口测试时,对于简单的不需要处理的接口,直接请求即可,但是对于需要处理的接口,如需要转码、替换值等,则就麻烦一些,一般我们都是先手动把修改好的值拷贝到请求里再进行请…

C++【个人笔记1】

1.C的初识 1.1 简单入门 #include<iostream> using namespace std; int main() {cout << "hello world" << endl;return 0; } #include<iostream>; 预编译指令&#xff0c;引入头文件iostream.using namespace std; 使用标准命名空间cout …

IC芯片测试:如何对芯片静态功耗进行测试?

静态功耗也叫静态电流&#xff0c;是指芯片在静止状态下的电流或者是指芯片在不受外界因素影响下自身所消耗的电流。静态功耗对于芯片来说是衡量一款芯片的功耗与效率非常重要的指标。 传统手动测试静态功耗只需在芯片的输入端串上一台万用表&#xff0c;然后对芯片各个端口添加…