有没有办法在PowerShell中声明一个32位无符号整数?
我试图添加一个无符号(开头0xf
)ie 0xff000000 + 0xAA
,但它结果是一个负数,而我希望它是0xff00000AA
.
Pen*_*hev 14
当前接受的答案中的代码导致我的系统出现以下错误:
这是因为Powershell总是首先尝试将十六进制值转换为int,因此即使您转换为uint64,如果数字具有负的int值,环境也会抱怨.您可以从以下示例中看到:
PS C:\> [uint64] (-1)
Cannot convert value "-1" to type "System.UInt64". Error: "Value was either too large or too small for a UInt64."
At line:1 char:26
+ Invoke-Expression $ENUS; [uint64] (-1)
+ ~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvalidCastIConvertible
Run Code Online (Sandbox Code Playgroud)
您需要将数字的字符串表示形式转换为uint64以避免这种情况:
[uint64]"0xff000000" + [uint64]"0xAA"
Run Code Online (Sandbox Code Playgroud)
对于32位无符号整数,0xff00000AA太大,请使用uint64
PS> [uint64]0xff00000AA
68451041450
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9864 次 |
最近记录: |