c# - 如何将格式 00-00 的十六进制转换为 double ?

标签 c# hex double

我正在获取格式为 00-C6(十六进制)的值。当我尝试将其转换为 double (格式执行)时它会提示。怎么办?

    public void check()
    {
        double low;
        double high;
        percentageCalculator(4095, 5, out low, out high);
        Dictionary[] A_1 = {Max_1, Min_1};

        for (int i = 0; i < A_1.Length; i++)
        {
            if ((Convert.ToDouble(A_1[i].CurrentValue) <= low) || ((Convert.ToDouble(A_1[i].CurrentValue) >= high))
            {
                Fault++;
            }
        }
    }

最佳答案

假设 Hex 00-C6 string 表示 Integer 值(因为如果它表示 floating -point值,如floatdouble,必须由4-byte8-byte组成>),那么处理它的一种方法是拆分 Hex string:

string hexString = "00-C6";
string[] hexes = hexString.Split('-');

然后像这样处理 hexes 中的每个元素:

int hex0 = Convert.ToInt32(hexes[0], 16);
int hex1 = Convert.ToInt32(hexes[1], 16);

如果十六进制是小端,那么你的double 值将是:

double d = hex0 << 8 + hex1;

如果它是 big endtion,你的 double 将是:

double d = hex1 << 8 + hex0;

这里的关键是要知道您可以使用 Convert.ToInt32 和第二个参数作为 16 将十六进制字符串表示形式转换为 Int

如果您愿意,可以将上述所有步骤合并为一个衬里。为了表述清晰,我特意将它们分解。

关于c# - 如何将格式 00-00 的十六进制转换为 double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36196409/

相关文章:

hex - 使用 flutter 中的 HexEncoder 类

python - 如何获取十六进制字符串的输出以十六进制打印?

python - python中的十六进制转换错误

mysql - 双结果MYSQL查询(Drupal数据库)

C 运行 'Debug' 和 'Start without debug' 时变量的不同答案

c# - 控制按钮启用属性的复选框 - ASP.NET

c# - EntityFramework.Extend 与 LinqPad 一起使用吗?

c# - Entity Framework 模型与 ViewModel 的最佳实践

c# - Convert.ToDouble 和 double.Parse 与 InvariantCulture 的区别

c# - 具有异步任务的 BenchmarkDotNet