PowerShell 5.1中如何更直接地将字节数组格式化为指定十六进制字符串?
PowerShell 5.1:直接将字节数组格式化为注册表风格的十六进制字符串
要将字节数组转换为33, 32, ff这种逗号分隔的十六进制格式(匹配注册表显示风格),除了用[System.BitConverter]::ToString($byteArray) -replace '-', ', '的间接方式,还有几种更直接的实现:
方法1:PowerShell原生遍历+格式化+连接
$byteArray | ForEach-Object { '{0:x2}' -f $_ } -join ', '
- 逻辑:逐个将每个字节格式化为两位小写十六进制字符串,再用
,连接结果。 - 若需要大写十六进制,将
x2替换为X2即可,输出会变成33, 32, FF。
方法2:调用.NET的String.Join方法
[string]::Join(', ', $byteArray | ForEach-Object { '{0:x2}' -f $_ })
- 逻辑和方法1一致,但直接使用.NET的
String.Join完成连接操作,在处理超大字节数组时性能略优(常规场景差异可忽略)。
示例验证
# 初始化字节数组 [byte[]] $byteArray = '0x33,0x32,0xff' -split ',' # 格式化输出 $formattedString = $byteArray | ForEach-Object { '{0:x2}' -f $_ } -join ', ' Write-Output $formattedString # 输出: 33, 32, ff
内容的提问来源于stack exchange,提问作者Gordon
相关产品推荐
相关产品推荐

