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

Hex conversion of GUID removes Zeros?

我有一个脚本可以获取 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 实际上与注册值匹配,但我的转换扭曲了结果我只需要知道为什么以及如何不让转换删除零 / s.

我认为添加 [int] 会有所帮助,但无济于事。

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

"{0:X2}" -f 15   # outputs string 0F
"{0:X3}" -f 27   # outputs string 01B
"{0:x4}" -f 254  # outputs string 00fe

...等等。此处的文档:

https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings#XFormatString