我尝试将十六进制字符串转换为十进制值,但它没有给我预期的结果
I tried convert.toint32(hexa,16)
, convert.todecimal(hexa)
.
我有一个看起来像这样的字符串:
我把它转换成:
我知道结果是:
我需要你的帮助
非常感谢您的帮助 :)
The System.Decimal
(C# decimal
) 类型是浮点类型并且不允许NumberStyles.HexNumber
说明符。的允许值范围System.Int32
(C# int
) 类型对于您的转换来说不够大。但是您可以使用以下命令执行此转换System.Int64
(C# long
) type:
string s = "10C5EC9C6";
long n = Int64.Parse(s, System.Globalization.NumberStyles.HexNumber);
'n ==> 4502505926
当然你可以将结果转换为decimal
然后:
decimal d = (decimal)Int64.Parse(s, System.Globalization.NumberStyles.HexNumber);
或者,您可以直接使用十进制编码的十六进制组转换原始字符串,并将转换为中间表示形式保存为十六进制字符串。
string s = "1 12 94 201 198";
string[] groups = s.Split();
long result = 0;
foreach (string hexGroup in groups) {
result = 256 * result + Int32.Parse(hexGroup);
}
Console.WriteLine(result); // ==> 4502505926
因为一个组代表 2 个十六进制数字,所以我们乘以 16 * 16 = 256。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)