【问题标题】:How to convert hex string into decimal value如何将十六进制字符串转换为十进制值
【发布时间】:2015-02-06 08:17:39
【问题描述】:

我尝试将十六进制字符串转换为十进制值,但它没有给我预期的结果

我试过convert.toint32(hexa,16)convert.todecimal(hexa)

我有一个这样的字符串:

  • 1 12 94 201 198

我把它转换成:

  • 10C5EC9C6

我知道结果是:

  • 4502505926

我需要你的帮助

非常感谢您的帮助:)

【问题讨论】:

    标签: c# hex type-conversion decimal


    【解决方案1】:

    System.Decimal (C# decimal) 类型是浮点类型,不允许使用 NumberStyles.HexNumber 说明符。 System.Int32 (C# int) 类型的允许值范围不足以进行转换。但是您可以使用 System.Int64 (C# long) 类型执行此转换:

    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。

    【讨论】:

      猜你喜欢
      • 2018-01-22
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 2019-07-27
      • 2011-08-25
      • 2014-04-28
      • 2020-03-14
      • 2020-06-20
      相关资源
      最近更新 更多