Python3实现IP地址校验与十六进制转换

远山来客
远山来客
发布时间:2026-10-14| 4人浏览过
原创

本文介绍在Python3中判断输入字符串是否为合法点分十进制IP地址的方法,并提供三种实现方案。若合法则转换为大写16进制格式输出,否则输出Error。内容涵盖正则匹配、列表解析及基础循环判断,适用于Python基础学习与网络编程场景。

Python3 IP地址校验与转换概述

本文分享使用Python3判断IP地址的具体代码实现,供读者参考学习。

程序接收一个字符串输入,首先判断其是否符合点分十进制IP地址的格式。如果符合,则将其转换为16进制格式输出;如果不符合,则输出“Error”。

需要注意,输入的字符串可能是任意内容,例如“abc.bas.fefe.4r4”或“23.23.11.23.123”等。这些情况均不属于合法的IP地址,程序应正确识别并返回错误提示。

输入输出示例说明

以下是具体的输入输出示例:

假设输入为:192.41.6.20

程序输出结果为:0xC0290614

若输入为:257.32.23.1

由于257超出IP段合法范围(0-255),程序输出:Error

代码实现方案一:正则表达式匹配

第一种解法:


import re
def isIP(str):
 p = re.compile('^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$')
 if p.match(str):
  return True
 # else:
 #  return False
myStr = input()
if isIP(myStr):
 print(IP(myStr).strHex().upper())
 # ip = list(map(int, myStr.split('.')))
 # print('0x', end='')
 # for i in ip:
 #  print(hex(i)[2:].upper().rjust(2, '0'), end='')
else:
 print('Error')

代码实现方案二:列表解析与类型转换

第二种解法:


def change(lis):
 if len(lis)!=4:
 return 'Error'
 try:    # 判断字符串是否存在非数字
 lis=[int(i) for i in lis]
 except:
 return 'Error'
 for i in lis:
 if i<0 or i>255: # 判断ip地址是否合法
 return 'Error'
 temp='0x'   #记录16进制数
 for i in lis:
 a=hex(int(i))[2:].upper().rjust(2,'0') #转换为16进制
 # if len(a)!=2:
 # a='0'+a
 temp+=a
 return temp
s=list(map(str,input().split('.')))
print(change(s))

代码实现方案三:基础循环与异常处理

第三种解法:


l = input().split(".")
if len(l) != 4:
 print("Error")
else:
 s = ""
 for i in l:
  try:
   num = int(i)
   if num > 255 or num < 0:
    print("Error")
    s = ""
    break
   else:
    s += hex(num)[2:].upper().rjust(2, "0")
  except ValueError:
   print("Error")
   s = ""
   break
 if s:
  print("0x" + s)

以上就是本文的全部内容,希望这些代码示例能对读者的学习有所帮助,也欢迎大家继续支持本站获取更多技术资源。

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

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