华为面试手撕真题【判断是ipv4还是ipv6地址】
时间: 2024-10-29 12:24:29 浏览: 46
在华为面试中,关于判断IPv4还是IPv6地址的题目通常考察的是程序员的基础网络知识以及对数据结构的理解。这里是一个简单的示例:
**问题描述:**
给定一个IP地址字符串,你需要编写一个函数来确定它是一个IPv4地址还是IPv6地址。IPv4地址由四组0到255之间的数字组成,每组之间用点`.`分隔;而IPv6地址由8组16进制数组成,每组用冒号`:`分隔,并且可能包含一些压缩形式如`::`表示连续的全零或`XX:XX:XX:XX:XX:XX:XX:XX`。
**示例代码(Python):**
```python
def is_ipv4(ip):
parts = ip.split('.')
if len(parts) == 4 and all(0 <= int(part) < 256 for part in parts):
return True
else:
return False
def is_ipv6(ip):
parts = ip.split(':')
if len(parts) >= 8 and (parts.count('') <= 1 or parts[0] == '' and parts[-1] == '') and all(part.isalnum() and len(part) <= 4 for part in parts):
return True
else:
return False
def identify_address(ip):
if is_ipv4(ip):
return "IPv4"
elif is_ipv6(ip):
return "IPv6"
else:
return "Invalid IP address"
# 测试
print(identify_address("192.168.1.1")) # 输出:IPv4
print(identify_address("2001:0db8:85a3:0000:0000:8a2e:0370:7334")) # 输出:IPv6
```
**
阅读全文