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

2023-09-22 16:07:29

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地址

更多推荐

vue前端 router路由hash和history模式区别

vue-router路由有两种方式,hash模式和history模式,接下来浅谈一下两者区别模式通俗解释兼容原理hashurl尾巴后的#号及后面的字符都是hash模式兼容IE8及以上于hash值变化不会导致浏览器向服务器发出请求,而且hash改变会触发hashchange事件(hashchange只能改变#后面的url

改写paddledetection为cmake版(c++)

下载源代码官方地址:https://gitee.com/paddlepaddle/PaddleDetection网盘:paddledetection链接:https://pan.baidu.com/s/1g0z5SYQNDR1pwe9iAtvR3A?pwd=ktl6提取码:ktl6paddleocr链接:https:/

腾讯云OCR - 降低客服财务运营成本

说明:参与中秋活动一、前言:随着图片时代的飞速发展,大量的文字内容为了优化排版和表现效果,都采用了图片的形式发布和存储,这为内容的传播和安全性带来了很大的便利,需要做重复性劳动。OCR文字扫描工具也逐渐的应运而生,主要是为了帮助用户解决了内容编辑的难题。二、OCR是什么?OCR全称是OpticalCharacterRe

ELK 企业级日志分析系统 ELFK

目录一、概述二、组件介绍2.1、ElasticSearch2.2、Kiabana2.3、Logstash2.4、可以添加的其它组件:Filebeat2.5、缓存/消息队列(redis、kafka、RabbitMQ等)2.6、Fluentd三、ELK工作原理四、实例演示1.ELK之部署"E"Elasticsearch2.

视频号视频怎么下载(视频号如何下载里面的视频)

根据大家分享出来的视频号如何下载里面的视频的相关提供的下载方案,我们特别总结了多款可以下载视频号视频怎么下载的办法!如果你还不会提取视频号里的视频,赶快来看看视频号里的视频怎么保存到相册的吧!1:视频下载缓存该方法仅针对安卓手机,具体操作方式打开手机的文件管理,找到手机的本地储存空间;在文件中依次找到Android—d

软件测试技术之地图导航的测试用例

外观测试屏幕显示不能有花屏、黑点和闪屏,清晰度、亮度、颜色要正常。检测所有按键都能起到相应作用,是否手感不良。UI显示状态、颜色、清晰度、效果。控制:放大,缩小,音量调节功能测试。交叉路口查询测试,点击交叉路口查询后能正确输入城市名称吗。关键字查询:点击关键字查询后搜索道路能正确的输入城市名称和关键字进行道路查询吗。6

Linux网络编程

一.协议1.1什么是协议从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。假设,A、B双方欲传输文件。规定:第一次,传输文件名,接收方接收到文件名,应答OK给传输方;第二次,发送文件的尺寸,接收方接牧到该数据再次应答一个OK;第三次.传输文件内容。同样.接收方接收数据完成后应答OK表示文件内容接收成

PostgreSQL 数据库实现公网远程连接

文章目录前言1.安装postgreSQL2.本地连接postgreSQL3.Windows安装cpolar4.配置postgreSQL公网地址5.公网postgreSQL访问6.固定连接公网地址7.postgreSQL固定地址连接测试前言PostgreSQL是一个功能非常强大的关系型数据库管理系统(RDBMS),下面简

在pandas中使matplotlib动态画子图的两种方法【推荐gridspec】

先上对比图,第一种方法,这里仅展示1个大区,多个的话需要加一层循环就可以了,主要是看子图的画法当大区下面的国家为1个或2个时,会进行报错#获取非洲国家列表african_countries=df[df['大区']=='南亚大区']['进口国'].unique()#动态计算子图的行列数量num_countries=len

datax同步数据翻倍,.hive-staging 导致的问题分析

一、背景有同事反馈Datax从Hive表同步数据到Mysql数据翻倍了。通过查看Datax任务日志发现,翻倍的原因是多读取了.hive-staging_xx开头的文件。接下里就是有关.hive-staging的分析。二、环境Hive版本2.1.1三、分析3.1.hive-staging_hive产生的原因通过Spark

【Java】泛型 之 编写泛型

写泛型类比普通类要复杂。通常来说,泛型类一般用在集合类中,例如ArrayList<T>,我们很少需要编写泛型类。如果我们确实需要编写一个泛型类,那么,应该如何编写它?可以按照以下步骤来编写一个泛型类。首先,按照某种类型,例如:String,来编写类:publicclassPair{privateStringfirst;

热文推荐