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

5

我有一系列十六进制数值,看起来像这样:

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

我尝试了很多方法,但从未得到最终的代码。我试图以各种想象得到的方式使用转换函数,但都没有成功。
目前我使用这个网站进行转换,但我需要在我的PowerShell脚本中完成此操作。

1
"68 65 6c 6c 6f 57" -split ' ' |ForEach-Object {[char][byte]"0x$_"}} -join '' => "68656C6C6F57" - Sorry IwontTell
2个回答

9
Phil P.的方法类似,但使用-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

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"

我们已经有了一个字符串,现在我们可以使用空格来分割,并单独获取每个值。这些值可以转换为int16,它是字符的ascii码表示。
$hexString.Split(" ") | forEach {[char]([convert]::toint16($_,16))}

唯一的问题是它返回一个单个字符的数组。我们可以通过迭代并将其连接为字符串。
$hexString.Split(" ") | forEach {[char]([convert]::toint16($_,16))} | forEach {$result = $result + $_}
$result

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接