在 PowerShell 中将十六进制转换为 ASCII

Convert Hex to ASCII in PowerShell

我有一系列十六进制值,如下所示:

68 65 6c 6c 6f 57 6f 72 6c 64 7c 31 2f 30 38 31 35 7c 41 42 43 2d 31 35 02 08

我现在需要将此十六进制值转换为 ASCII,以便结果如下所示:

helloWorld|1/0815|ABC-15

我尝试了很多东西,但我从来没有得到最终的代码。我尝试以各种可以想象的方式使用 convert-function 但没有成功。

目前我使用 this website 进行转换,但我需要在我的 PowerShell 脚本中执行此操作。

好吧,我们可以做一些可怕的事情,将 HEX 视为字符串...然后将其转换为 int16,然后可以将其转换为 char。

$hexString = "68 65 6c 6c 6f 57 6f 72 6c 64 7c 31 2f 30 38 31 35 7c 41 42 43 2d 31 35 02 08"

我们有了字符串,现在我们可以使用空格来拆分并分别获取每个值。这些值可以转换为 int16,这是字符

的 ascii 代码表示
$hexString.Split(" ") | forEach {[char]([convert]::toint16($_,16))}

唯一的问题是它 returns 是单个字符的数组。我们可以遍历并连接成一个字符串

$hexString.Split(" ") | forEach {[char]([convert]::toint16($_,16))} | forEach {$result = $result + $_}
$result

很像 ,但使用 -split-join 运算符代替(另外,不需要整数,ASCII 字符将适合 [byte]):

$hexString = "68 65 6c 6c 6f 57 6f 72 6c 64 7c 31 2f 30 38 31 35 7c 41 42 43 2d 31 35 02 08"
$asciiChars = $hexString -split ' ' |ForEach-Object {[char][byte]"0x$_"}
$asciiString = $asciiChars -join ''
$asciiString