Powershell GUID的十六进制转换是否删除零?

Powershell GUID的十六进制转换是否删除零?,powershell,hex,guid,Powershell,Hex,Guid,我有一个脚本,它接受GUID的十六进制值并转换为GUID。然而,它正在为例如删除零。这是我的输出。reg读取十六进制值 $GUIDLocal1 = (Get-ItemProperty "$Reg\Common Api")."UniqueID" $GUIDLocal2 = (Get-ItemProperty "$Reg\Test\Common Api")."UniqueID" # This is not code below just info $GUIDLocal1 is 54 171 225

我有一个脚本,它接受GUID的十六进制值并转换为GUID。然而,它正在为例如删除零。这是我的输出。reg读取十六进制值

$GUIDLocal1 = (Get-ItemProperty "$Reg\Common Api")."UniqueID"
$GUIDLocal2 = (Get-ItemProperty "$Reg\Test\Common Api")."UniqueID"

# This is not code below just info
$GUIDLocal1 is 54 171 225 63 61 204 14 79 168 61 49 246 193 140 121 152
$GUIdlocal2 is 54 171 225 63 61 204 14 79 168 61 49 246 193 140 121 152
ID in Database is              36ABE13F3DCC0E4FA83D31F6C18C7998
$guidinhex                     36ABE13F3DCCE4FA83D31F6C18C7998
$guidinhex2                    36ABE13F3DCCE4FA83D31F6C18C7998
# This is not code above just info 
我正在使用此代码进行转换

$guidinHex = [string]::Empty
$guidinHex2 = [string]::Empty
$GUIDLocal1 | % { $guidInHEX += '{0:X}' -f [int]$_ }
$GUIDLocal2 | % { $guidInHEX2 += '{0:X}' -f [int]$_ }
ID是GUID,其中删除了所有
{
}
-
以便于查看。
$GUIDLocal1
$GUIDLocal2
是注册表中的十六进制值

然后我使用上面的代码进行转换(
$GUIDLocal1
$GUIDLocal2
是guidinhex/2的值)

转换工作,但如果有一个零,它会将其去掉,正如您在上面所看到的-这台机器的GUID实际上与reg值匹配,但我的转换正在扭曲结果。我只需要知道为什么以及如何不让转换删除零/s

我认为添加
[int]
会有帮助,但没有效果。

使用
-f
(format)运算符可以将数值格式化为带前导零的十六进制字符串。格式规范是
{0:Xn}
{0:Xn}
,其中n是字符串输出中所需的位数(如果需要,用零填充)。大写
X
或小写
X
指定希望十六进制值
A
F
是大写还是小写。示例:

"{0:X2}" -f 15   # outputs string 0F
"{0:X3}" -f 27   # outputs string 01B
"{0:x4}" -f 254  # outputs string 00fe
…等等。此处的文档:


“{0:X2}”-f0
输出
00
“{0:X2}”-f1
输出
01
,等等。谢谢!请不要将答案编辑成问题。对不起,我如何标记Bill_Stewart,因为正确的评论不是答案,因此无法接受。