コード例 #1
0
ファイル: Timer.cs プロジェクト: wzg6540/s7netplus
 /// <summary>
 /// Converts the timer bytes to a double
 /// </summary>
 public static double FromByteArray(byte[] bytes)
 {
     double wert = 0;
     Int16 value = (Int16)Types.Word.FromBytes(bytes[1], bytes[0]);
     string txt = Conversion.ValToBinString(value);
     wert = Conversion.BinStringToInt32(txt.Substring(4, 4)) * 100.0;
     wert += Conversion.BinStringToInt32(txt.Substring(8, 4)) * 10.0;
     wert += Conversion.BinStringToInt32(txt.Substring(12, 4));
     switch (txt.Substring(2, 2))
     {
         case "00":
             wert *= 0.01;
             break;
         case "01":
             wert *= 0.1;
             break;
         case "10":
             wert *= 1.0;
             break;
         case "11":
             wert *= 10.0;
             break;
     }
     return wert;
 }
コード例 #2
0
ファイル: Double.cs プロジェクト: mesta1/s7netplus
        // publics
        #region FromByteArray
        public static double FromByteArray(byte[] bytes)
        {
            byte v1 = bytes[0];
            byte v2 = bytes[1];
            byte v3 = bytes[2];
            byte v4 = bytes[3];

            if ((int)v1 + v2 + v3 + v4 == 0)
            {
                return(0.0);
            }
            else
            {
                // nun String bilden
                string txt = ValToBinString(v1) + ValToBinString(v2) + ValToBinString(v3) + ValToBinString(v4);
                // erstmal das Vorzeichen
                int    vz       = int.Parse(txt.Substring(0, 1));
                int    exd      = Conversion.BinStringToInt32(txt.Substring(1, 8));
                string ma       = txt.Substring(9, 23);
                double mantisse = 1;
                double faktor   = 1.0;

                //das ist die Anzahl der restlichen bit's
                for (int cnt = 0; cnt <= 22; cnt++)
                {
                    faktor = faktor / 2.0;
                    //entspricht 2^-y
                    if (ma.Substring(cnt, 1) == "1")
                    {
                        mantisse = mantisse + faktor;
                    }
                }
                return(Math.Pow((-1), vz) * Math.Pow(2, (exd - 127)) * mantisse);
            }
        }