我有一个脚本,它接受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值匹配,但我的转换是偏向结果我只需要知道为什么以及如何不具备转换删除Zero / s。
我认为添加[int]
会有所帮助,但无济于事。
答案 0 :(得分:0)
-f
(格式)运算符允许您将数值格式化为带前导零的十六进制字符串。格式规范为{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
......等等。文档: