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

2 powershell hex ascii string-formatting

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

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
Run Code Online (Sandbox Code Playgroud)

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

helloWorld|1/0815|ABC-15
Run Code Online (Sandbox Code Playgroud)

我尝试了很多东西,但我从未进入最终的代码.我尝试以任何可以想象的方式使用convert-function而没有任何成功.

目前我使用此网站 进行转换,但我需要在PowerShell脚本中执行此操作.

Mat*_*sen 6

很像Phil P.的方法,但是使用-split-join运算符(也就是说,不需要整数,ASCII字符将适合a [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
Run Code Online (Sandbox Code Playgroud)


Phi*_* P. 4

好吧,我们可以做一些可怕的事情,将 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"
Run Code Online (Sandbox Code Playgroud)

我们有了字符串,现在我们可以使用空格来分割并分别获取每个值。这些值可以转换为 int16,它是字符的 ascii 代码表示形式

$hexString.Split(" ") | forEach {[char]([convert]::toint16($_,16))}
Run Code Online (Sandbox Code Playgroud)

唯一的问题是它返回单个字符的数组。我们可以迭代并连接成一个字符串

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