加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

将Delphi Real48转换为C#double

发布时间:2020-12-15 04:15:14 所属栏目:大数据 来源:网络整理
导读:我需要能够从Delphi Real48转换为C#double. 我有转换所需的字节,但我正在寻找一个优雅的解决方案.问题. 以前有人不得不这样做吗? 我需要在C#中进行转换 提前致谢 解决方法 我已经做了一些狩猎,我找到了一些C代码来完成这项工作,转换它,它似乎正在给出正确的
我需要能够从Delphi Real48转换为C#double.

我有转换所需的字节,但我正在寻找一个优雅的解决方案.问题.

以前有人不得不这样做吗?

我需要在C#中进行转换

提前致谢

解决方法

我已经做了一些狩猎,我找到了一些C代码来完成这项工作,转换它,它似乎正在给出正确的答案…该死的,如果我理解这一切:S
private static double Real48ToDouble(byte[] real48)
    {

        if (real48[0] == 0)
            return 0.0; // Null exponent = 0

        double exponent = real48[0] - 129.0;
        double mantissa = 0.0;

        for (int i = 1; i < 5; i++) // loop through bytes 1-4
        {
            mantissa += real48[i];
            mantissa *= 0.00390625; // mantissa /= 256
        }


        mantissa += (real48[5] & 0x7F);
        mantissa *= 0.0078125; // mantissa /= 128
        mantissa += 1.0;

        if ((real48[5] & 0x80) == 0x80) // Sign bit check
            mantissa = -mantissa;

        return mantissa * Math.Pow(2.0,exponent);
    }

如果有人可以解释它会很棒:D

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读