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

标签 c# hex type-conversion decimal

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

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

我有一个像这样的字符串:

  • 1 12 94 201 198

然后我把它转换成:

  • 10C5EC9C6

我知道结果是:

  • 4502505926

我需要你的帮助

非常感谢您的帮助:)

最佳答案

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。

关于c# - 如何将十六进制字符串转换为十进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27362010/

相关文章:

Odata v3 中的 C# "Resource not found for the segment"错误,状态代码为 200

C: 为 hexdump 格式化字符串(char* 到另一个 char*)

swift - 如何在 Swift 中将十六进制数转换为 bin?

javascript - 从选中的单选按钮传递整数数组而不是数字字符串

c# - 使用 foreach 遍历 WPF DataGrid

c# - 为 Container->(Container)->Item 设计通用数据结构/存储

c# - LINQ - 方法与查询语法差异

matlab - 如何在 MATLAB 中从纪元时间获取秒数?

c# - 在 C# 中将字符串转换为键

c - 在 C 或其他程序中 XOR 2 52 字节消息?