如何将超长十六进制字符串正确转换为decimal类型?
解决方法
报错的核心原因是decimal类型的默认转换器不支持直接解析带0x前缀的十六进制字符串,且该十六进制对应的数值远超普通整型(如Int64)的上限,无法通过普通整型中转。可以借助System.Numerics.BigInteger类型作为中间载体完成转换,该类型支持任意长度的整数解析,且你给出的目标数值远小于decimal的最大取值范围(约7.9e28),转换无精度损失。
完整实现代码(兼容PowerShell 5.1及以上版本)
# 输入的十六进制字符串 $hexStr = '0x82e83f52d81253e79c4' # 去除十六进制前缀,兼容大小写前缀格式 $cleanHex = $hexStr.TrimStart('0x','0X') # 先将无前缀的十六进制字符串转换为BigInteger $bigIntVal = [System.Numerics.BigInteger]::Parse($cleanHex, [System.Globalization.NumberStyles]::HexNumber) # 再将BigInteger转换为decimal类型 $decimalVal = [decimal]$bigIntVal
执行后输出$decimalVal即可得到你需要的结果:38636990646568762636740
内容的提问来源于stack exchange,提问作者dharmatech
相关产品推荐
相关产品推荐

