将 Format-Hex PowerShell table 转换为原始十六进制转储
Convert Format-Hex PowerShell table to raw hex dump
我在 PowerShell 中使用了 Format-Hex
命令来获取字符串的十六进制内容。我的命令 "some_string" | format-hex
给出 table 中的输出。我怎样才能把它变成一个原始的十六进制转储,所以它类似于 736f6d655f737472696e67
?
扩展结果对象的Bytes
属性,将每个字节格式化为两位十六进制数,然后加入它们:
("some_string" | Format-Hex | Select-Object -Expand Bytes | ForEach-Object { '{0:x2}' -f $_ }) -join ''
但是,编写自定义函数将字符串转换为十六进制表示可能会更简单、更直接:
function ConvertTo-Hex {
[CmdletBinding()]
Param(
[Parameter(
Position=0,
Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true
)]
[string]$InputObject
)
$hex = [char[]]$InputObject |
ForEach-Object { '{0:x2}' -f [int]$_ }
if ($hex -ne $null) {
return (-join $hex)
}
}
"some_string" | ConvertTo-Hex
我在 PowerShell 中使用了 Format-Hex
命令来获取字符串的十六进制内容。我的命令 "some_string" | format-hex
给出 table 中的输出。我怎样才能把它变成一个原始的十六进制转储,所以它类似于 736f6d655f737472696e67
?
扩展结果对象的Bytes
属性,将每个字节格式化为两位十六进制数,然后加入它们:
("some_string" | Format-Hex | Select-Object -Expand Bytes | ForEach-Object { '{0:x2}' -f $_ }) -join ''
但是,编写自定义函数将字符串转换为十六进制表示可能会更简单、更直接:
function ConvertTo-Hex {
[CmdletBinding()]
Param(
[Parameter(
Position=0,
Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true
)]
[string]$InputObject
)
$hex = [char[]]$InputObject |
ForEach-Object { '{0:x2}' -f [int]$_ }
if ($hex -ne $null) {
return (-join $hex)
}
}
"some_string" | ConvertTo-Hex