下面的十六進制值:
0x82e83f52d81253e79c4
以下是以10為基數:
38636990646568762636740
如果我試圖將其轉換為十進制:
[decimal] '0x82e83f52d81253e79c4'
我得到的結果是:
無法轉換值"0x82e83f52d81253e79c4" 到 type "System. 十進制"。Error。"輸入字串的格式不正確。"。
有什么好方法可以將字串中的那個大的十六進制值轉換為十進制?
uj5u.com熱心網友回復:
使用[bigint]::Parse來決議十六進制字串為BigInteger,然后投遞到[decimal]:
# define hex string。
$string = '0x82e83f52d81253e79c4'/span>
# 移除0x前綴
$string = $string -replace '^0x'/span>
# prepend `0`以避免[bigint]::Parse將數字解釋為有符號。
$string = "0${string}"/span>
# now parse it as a [bigint]
$bigint = [bigint]::Parse($string, [System.Globalization.NumberStyles]: AllowHexSpecifier)
# finally cast to `[十進制]`
[十進制]$bigint。
這可以很容易地變成一個小的實用函式:
這可以很容易地變成一個小的實用函式。
function ConvertFrom-Hexadecimal
{
param(
[Parameter(Mandatory)]
[string]$Hexadecimal.
)
$string = '0{0}'/span> -f ($Hexadecimal -replace '^0x'/span>)
return [decimal][bigint]::Parse($string, [System.Globalization.NumberStyles]:AllowHexSpecifier)
}
PS ~> $decimal = ConvertFrom-exadecimal '0x82e83f52d81253e79c4'/span>
PS ~> $decimal - is [decimal]
True [decimal]。
PS ~> $decimal decimal
38636990646568762636740
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/309292.html
標籤:
