有沒有辦法在powershell腳本語言中聲明一個32位無符號整數?Powershell,如何聲明一個無符號的32位整數?
我試圖加入一個未簽名(與0xf開始)即0xff000000 +和0xAA,但它竟然是負數......我想這是0xff00000AA
有沒有辦法在powershell腳本語言中聲明一個32位無符號整數?Powershell,如何聲明一個無符號的32位整數?
我試圖加入一個未簽名(與0xf開始)即0xff000000 +和0xAA,但它竟然是負數......我想這是0xff00000AA
0xff00000AA是太大一個32位無符號整數,使用UINT64
PS> [uint64]0xff00000AA
68451041450
從目前接受的答案代碼導致我的系統上出現以下錯誤:
這是因爲PowerShell的總是試圖爲十六進制值轉換s轉換爲int,所以即使你轉換爲uint64,如果該數字具有負的int值,環境也會投訴。 你需要轉換數字的字符串表示UINT64避免這種情況:
[uint64]"0xff000000" + [uint64]"0xAA"
我假設你的意思,因爲0xff0000AA
,如其他人所說,0xff00000AA
是溢出。
最簡單的方法是從字符串中轉換值。您可以使用System.Convert
:
[System.Convert]::ToUInt32('0xff0000AA',16)
[System.Convert]::ToUInt32('ff0000AA',16)
或者只是嘗試投的字符串,但在這種情況下,你需要預先0x
:
[uint32]'0xff0000AA'
如果,另一方面,你真的做想知道64位數字`0xff00000aa」的32位無符號整數部分,那麼你可以這樣做:
[System.Convert]::ToUInt32([System.Convert]::ToString(0xff00000AA -band ([uint32]::MaxValue),16),16)
這不回答這個任務離子實際上被詢問,即如何聲明一個無符號的32位整數,其餘的文本暗示高位被設置。 Pencho提供的答案_does_提供了一種方法來做到這一點。在提出問題的情況下,假設所提供的示例只有更多的十六進制數字比預期的更好,並且_not_對於32位整數(有符號或其他)是「太大」似乎是合理的。 –