powershell - 将大的十六进制字符串转换为十进制
问题描述
以下十六进制值:
0x82e83f52d81253e79c4
以 10 为基数的以下内容:
38636990646568762636740
如果我尝试将其转换为decimal
:
[decimal] '0x82e83f52d81253e79c4'
我得到以下信息:
Cannot convert value "0x82e83f52d81253e79c4" to type "System.Decimal". Error: "Input string was not in a correct format."
将字符串中的大十六进制值转换为 a 的好方法是decimal
什么?
解决方案
用于[bigint]::Parse
将十六进制字符串解析为BigInteger
,然后转换为[decimal]
:
# define hex string
$string = '0x82e83f52d81253e79c4'
# remove 0x prefix
$string = $string -replace '^0x'
# prepend `0` to avoid having [bigint]::Parse interpret number as signed
$string = "0${string}"
# now parse it as a [bigint]
$bigint = [bigint]::Parse($string, [System.Globalization.NumberStyles]::AllowHexSpecifier)
# finally cast to `[decimal]`
[decimal]$bigint
这可以很容易地变成一个小的实用函数:
function ConvertFrom-Hexadecimal
{
param(
[Parameter(Mandatory)]
[string]$Hexadecimal
)
$string = '0{0}' -f ($Hexadecimal -replace '^0x')
return [decimal][bigint]::Parse($string, [System.Globalization.NumberStyles]::AllowHexSpecifier)
}
PS ~> $decimal = ConvertFrom-Hexadecimal '0x82e83f52d81253e79c4'
PS ~> $decimal -is [decimal]
True
PS ~> $decimal
38636990646568762636740
推荐阅读
- c# - IIS 中共享相同 sessionid 的多个网站无法同时连接
- python-3.x - geteuid() 仅适用于 UNIX,是否有适用于 Windows 系统的合理解决方法?
- python - AttributeError:模块 'config' 没有属性 'cache_dir'
- amazon-web-services - AWSLogs 客户端 filterLogEvents 没有提供任何数据作为响应
- javascript - 用于计算字符串中位数的代码片段,如何编写它来工作?
- flutter - 如何将 Pdf 文件发送到服务器?
- java - Java中的正则表达式在替代匹配中使用相同的组
- gradle - 有没有办法告诉 gradle 从某个模块构建
- html - Owl carousel 将两张图像显示为一张(4 张图像 - 两个点)
- azure - 如何在不同于默认值的 ARM 模板中为私有端点指定订阅和资源管理器