powershell - 验证 IP 地址的奇怪行为
问题描述
验证 IP 地址后出现奇怪的 IP 地址。例如:
$ipnr = "010.010.010.100"
[System.Net.IPAddress]$ip = $ipnr
$ipnr
返回 8.8.8.100。
看到一个八位字节'07'
没有问题。它开始于'08'
。我必须验证,因为字符串可以有前导零。当然,我可以从八位字节中修剪和删除前导零,但发现它很奇怪,验证[IPAddress]
不起作用。
解决方案
带前导零的数字被解释为八进制数(八进制 010 == 十进制 8)。要解决此问题,请删除前导零,例如:
[Net.IPAddress]$ip = [int[]]$ipnr.Split('.') -join '.'
或像这样:
[Net.IPAddress]$ip = $ipnr -replace '(?<=^|\.)0+'
推荐阅读
- c# - 如何让 WinForms RichTextBox 正确绘制线条而不必突出显示它们?
- sqlite - SQLite3; 如何处理事务提交或回滚中的失败?
- swift - SwiftUI 导航栏颜色
- python - 查找第一个非空和非空字符串值
- python - mpi4py - 获取 2 CPU 服务器上的处理器编号
- google-apps-script - 如何使用 Google App Scripts 在 Classroom 中获取 Meet 代码列表到 Google Sheet
- git - git main 和链接工作树之间的区别?
- django - 如何使用 Django 表单显示错误消息?
- reactjs - 在 React 中,我可以在功能组件之外使用 useState 的 set 功能吗?
- powershell - Get-MailTrafficTopReport 脚本