Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PowerShell中将十六进制转换为ASCII_Powershell_Hex_Ascii_String Formatting - Fatal编程技术网

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

在PowerShell中将十六进制转换为ASCII,powershell,hex,ascii,string-formatting,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 我现在需要将此十六进制值转换为ASCII,以便结果如下所示: helloWorld|1/0815|ABC-15 我尝试了很多东西,但我从来没有得到最终的代码。我尝试以任何可以想象的方式使用convert函数,但没有成功 目前我使用转换,但我需要在我的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函数,但没有成功


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

好吧,我们可以做一些糟糕的事情,并将十六进制作为字符串处理。。。然后将其转换为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
与此非常相似,但使用
-split
-join
运算符(同样,不需要整数,ASCII字符将放入
[byte]
中):

(“68 65 6c 6c 6f 57”-拆分“”| ForEach对象{[char][byte]“0x$”})-连接“”
$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