如何将十六进制字符串转换为十进制值

Posted

技术标签:

【中文标题】如何将十六进制字符串转换为十进制值【英文标题】: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

我需要你的帮助

非常感谢您的帮助:)

【问题讨论】:

【参考方案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。

【讨论】:

以上是关于如何将十六进制字符串转换为十进制值的主要内容,如果未能解决你的问题,请参考以下文章

如何将一串十六进制值转换为base64字符串

如何阻止 grafana 将十六进制字符串转换为整数?

如何将 stringstream 十六进制字符串字符对转换为单个 uint8_t 等效二进制值

如何将包含 UTF-8 十六进制值的字符串转换为 C 中的 wchar?

如何将字符串颜色转换为其十六进制代码或 RGB 值?

如何将UIColor转换为十六进制字符串?