C# 解码十进制64数据

C# 解码十进制64数据,c#,.net,decimal,C#,.net,Decimal,我正在寻找一种使用C#对以十进制64格式(此处描述)存储的数据进行解码的简单方法 有什么想法吗?读得有点太快了 我想您可能想看看C#中的BitConverter.ToSingle方法,但要得到正确的结果,请颠倒字节顺序。:) B.R Jaggernauten到处寻找它,最后我们自己实现了它 更新 你们中的一些人要求我们提供代码-这是我们的代码,我们称之为浮点十进制,我认为它与十进制64匹配-但不能保证-请自己检查 还请注意_size的值应为8 if (bytes[0] == 0) return

我正在寻找一种使用C#对以十进制64格式(此处描述)存储的数据进行解码的简单方法


有什么想法吗?

读得有点太快了

我想您可能想看看C#中的BitConverter.ToSingle方法,但要得到正确的结果,请颠倒字节顺序。:)

B.R
Jaggernauten到处寻找它,最后我们自己实现了它

更新 你们中的一些人要求我们提供代码-这是我们的代码,我们称之为浮点十进制,我认为它与十进制64匹配-但不能保证-请自己检查

还请注意_size的值应为8

 if (bytes[0] == 0) return 0;
        var s = "";
        for (var i = 1; i < bytes.Length; i++)
            s += bytes[i].ToString("X").PadLeft(2, '0');
        return decimal.Parse("." + s.TrimEnd('0')) * (decimal)Math.Pow(10 , ((bytes[0] & ~128) - 64)) * ((bytes[0] & 128) > 0 ? -1 : 1);
if(字节[0]==0)返回0;
var s=“”;
对于(var i=1;i0?-1:1;
要保存:

 if (value != 0)
        {
            var negative = value < 0;
            var s = value.ToDecimal().ToString(CultureInfo.InvariantCulture).TrimStart('-', '0');
            var i = s.IndexOf('.');
            if (i >= 0)
            {
                s = s.Remove(i, 1);
                if (i == 0)
                {
                    i = s.Length;
                    s = s.TrimStart('0');
                    i = s.Length-i;
                }
            }
            else i = s.Length;
            bytes[0] = (byte)(64 + i + (negative ? 128 : 0));
            s = s.PadRight((_size - 1) * 2, '0');
            for (var j = 1; j < _size && (j - 1) * 2 < s.Length; j++)
                bytes[j] = byte.Parse(s.Substring((j - 1) * 2, 2), System.Globalization.NumberStyles.HexNumber);
        }
if(值!=0)
{
var负值=值<0;
var s=value.ToDecimal().ToString(CultureInfo.InvariantCulture).TrimStart('-',0');
变量i=s.IndexOf('.');
如果(i>=0)
{
s=s。移除(i,1);
如果(i==0)
{
i=s.长度;
s=s.TrimStart('0');
i=s.长度-i;
}
}
否则i=s.长度;
字节[0]=(字节)(64+i+(负128:0));
s=s.PadRight((_size-1)*2,'0');
对于(var j=1;j<_size&&(j-1)*2你能共享你的实现吗?@ USE354662,我想知道解码Dimial64到二进制的算法,并且可选地,如何在C++中为Linux做它。谢谢。诺姆,我想知道解码Dimial64到二进制的算法,并且可以选择如何在C++中为Linux做它。感谢you@Frank我添加了我们的C#实现——也许它可以引导您朝着正确的方向前进。