将 hexdump 命令转换为 Format-Hex

问题描述 投票:0回答:1

我目前在转换以下命令时遇到问题:

echo -ne '\x08\x80\01' | hexdump -C

截至目前,我有一个适用于大多数情况的命令(例如

\x08\x7F
有效)。看起来像这样:

$bytes = [byte[]]@(0x08, 0x80, 0x01)
$stdout = [Console]::OutputEncoding.GetString($bytes)
Format-Hex -InputObject $stdout

我简化了上面的命令。进行编码是没有意义的,因为我们只需执行

[byte[]]@(0x08, 0x80, 0x01) | Format-Hex
。这里的编码是由Powershell完成的,它来自外部命令(protoc)的执行。

hexdump
输出:

08 80 01

Format-Hex
输出:

08 EF BF BD 01

我认为这是一个编码问题,但我不知道如何解决它。

powershell hexdump
1个回答
0
投票

根据您的编辑历史记录,您希望将字节从本机命令通过管道传输到 PowerShell cmdlet (

native | ps
)。目前,这是不可能的。但您可以使用临时文件作为解决方法:

# Create a temporary file
$TempFile = New-TemporaryFile

# Write the bytes into the temporary file
Start-Process protoc -ArgumentList "--encode=Encoding ./encoding.proto" -RedirectStandardOutput $TempFile -Wait

# Print a hexdump of the bytes
Format-Hex -Path $TempFile

# (Optional) Remove the temporary file
Remove-Item $TempFile

仅供参考,使用 PowerShell 7.4,您可以 通过管道将字节从本机命令传输到另一个本机命令 (

native | native
)

© www.soinside.com 2019 - 2024. All rights reserved.