十六进制到十进制转换 - PowerShell 5

Ron*_*ona 5 powershell hex

由于某种原因,当将 PowerShell 中的某些值从十六进制转换为十进制时,我得到了不正确的值。

例如: - 输入0xC0000000然后按回车键,您会得到-1073741824不正确的值,正确的值为3221225472。给出的答案是我输入的负十六进制数的值FFFFFFFFC0000000

我认为这可能是一个解释问题,所以我明确要求将值从十六进制转换为 Base10(十进制),我仍然得到相同的错误答案-1073741824

[Convert]::ToString(0xc0000000,10)
Run Code Online (Sandbox Code Playgroud)

为什么 PowerShell 将0xc0000000十六进制数解释为负数c0000000?我在这里错过了什么吗?

Ans*_*ers 10

这是 PowerShell 的一个陷阱(也存在于早期版本中)。当您实际上希望它是无符号整数时,该值会被解释为有符号整数。您需要进行这样的转换才能解决该问题:

[uint32]"0xC0000000"
Run Code Online (Sandbox Code Playgroud)