PowerShell中将十六进制MAC地址字符串转换为Base64的方法咨询
PowerShell 复现MAC地址转Base64逻辑的实现
正确可运行代码
# 定义输入MAC地址 $macAddress = "AA:BB:CC:DD:E2:00" # 移除所有支持的分隔符(:、-、.) $cleanMac = $macAddress -replace '[:\-\.]', '' # 将十六进制字符串转换为对应字节数组 $bytes = [System.Convert]::FromHexString($cleanMac) # 字节数组编码为Base64字符串,即为最终结果 $base64Result = [System.Convert]::ToBase64String($bytes) # 输出验证,示例输入对应输出为 qrvM3eIA Write-Output $base64Result
旧版本PowerShell兼容方案
如果你使用PowerShell 5.1及更低版本,[System.Convert]::FromHexString 接口不可用,可将转字节数组的步骤替换为如下实现:
$bytes = for ($i = 0; $i -lt $cleanMac.Length; $i += 2) { [Convert]::ToByte($cleanMac.Substring($i, 2), 16) }
原有方案错误原因
- 第一种方案报错原因:
Format-Hex输出的是供展示的格式化对象,不是原始字节数组,不符合BitConverter.ToString的参数要求,因此触发重载匹配失败的报错。你看到的单参数示例传入的是标准字节数组,和Format-Hex的输出不是同类型数据。 - 第二种方案结果错误原因:
[System.Text.Encoding]::UTF8.GetBytes()是将字符串的每个字符按UTF8规则转字节,例如字符A会被转为0x41,和我们需要的「两个十六进制字符映射为一个字节」的逻辑完全不同,因此输出不符合预期。
内容的提问来源于stack exchange,提问作者Grant Curell
相关产品推荐
相关产品推荐

