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地址
互联网上分布着很多设备,如电脑、手机、智能手表等。设备与设备之间会互相通信,如你给朋友发送一条微信语音信息,其实就是你的手机在与朋友的手机进行通信。
但是,这条信息为什么会准确到达你朋友的手机,而不是其他设备?这是因为网络上的每台设备都有一个唯一的网络地址。如果把网络信息看作日常生活
中
的信件,网络地址就是信件上的收件人地址,有了这个地址,信息就能准确到达网络上的某一设备。
网络地址有不同类型,如 MAC 地址、IP 地址、URL 等,本关针对的是 IP 地址。IP 地址目前主要有两个版本:I..
本文实例讲述了
python
批量生成本地
ip地址
的
方法
。分享给大家供大家参考。具体分析如下:
这段代码用于在本地计算机上生成本地
ip地址
绑定到网卡,生成的是一个bat的批处理文件,运行此批处理文件,可以通过ipconfig查看
#!/usr/bin/
python
2.7
# -*- coding: utf-8 -*-
# Filename: AddIPAliases.py
import re,sys,socket,struct
# 1. 判断
IP地址
是否合法; 2. 判断用户输入的IP是否在Class A,Class B 或 Class C
中
def CheckIP(IP,IPClassesIn
转载自:https://blog.csdn.net/fan_hai_ping/article/details/8435140
Python
Socket模块
中
包含一些有用IP
转换
函数,说明如下:socket.ntohl(x) // 类似于C语言的ntohl(x)把32位正整数从网络序
转换
成主机字节序。socket.ntohs(x) // 类似于C语言的ntohs(x)把...
chr(x):将整数
转换
为一个字符,整数为字符的ASCII编码
ord(x):将一个字符
转换
为他的ASCII编码的整数值
hex(x):将一个整数
转换
为一个十六进制字符串
oct(x):将一个整数
转换
为一个八进制字符串
eval(str):将一个字符串当作有效表达式求值,返回计算结果
data1 = bin(int(input()))[2:].rjust(32,"0") #整数转
IP地址
temp = []
caozuo = [temp.append(int(data.
本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程
中
用到的ai工具。
通过将这四个部分的数字组合在一起,我们可以唯一地标识互联网上的任何设备。不用担心,我将通过使用
Python
来解开这个谜团,并向大家展示如何轻松地进行
IP地址
转换
。然后,打印该对象,会自动将其
转换
回常规的
IP地址
字符串表示。无论是整数表示、常规字符串表示还是二进制表示,
Python
都提供了简单而强大的工具来满足我们的需求。在这个例子
中
,我们使用了packed属性来获得IPv4地址的二进制表示形式,然后使用。另一方面,如果我们想要将整数表示的
IP地址
转换
回常规的
IP地址
字符串,我们可以使用。
背景知识:
ip地址
(这里都是指的ipv4地址)是一个32位(4字节)的无符号整数。为方便记忆,把每个字节看做一个无符号数,并以.号隔开。比如常见的私有地址192.168.100.1, dns 114.114.114.114。
下面这段代码,展示
python
如何处理
ip地址
的一些
方法
。
import socket, struct
inet
_
aton
:字符串
转换
成一个32位的网络字节序二进制值
inet
_addr:返回值为32位的网络字节序二进制,
inet
_
ntoa
:将一个32位的网络字
IP地址
的规划,不仅是网络设计
中
的重
中
之重,还会直接影响网络的转发效率和扩展性。很多从事网络工作多年的朋友,免不了要在工作
中
重复计算诸如网段、子网掩码、广播地址、子网数。还要判断IP网段的包含关系和对多个
IP地址
段进行汇总等等。如果计算数据量特别大,不仅费时费力,还容易出错。
Python
有一个非常强大的第三方库IPy,适用于
Python
2.6-3.7版本,可以帮助我们完成此类计算任务。