Exemplo n.º 1
0
        public static UInt32 ConvertToUInt(this double input)
        {
            uint output;

            output = DWord.FromByteArray(Double.ToByteArray(input));
            return(output);
        }
Exemplo n.º 2
0
        private static double SetBytesFromProperty(object propertyValue, byte[] bytes, double numBytes)
        {
            int bytePos = 0;
            int bitPos  = 0;

            byte[] bytes2 = null;

            switch (propertyValue.GetType().Name)
            {
            case "Boolean":
                // get the value
                bytePos = (int)Math.Floor(numBytes);
                bitPos  = (int)((numBytes - (double)bytePos) / 0.125);
                if ((bool)propertyValue)
                {
                    bytes[bytePos] |= (byte)Math.Pow(2, bitPos);                // is true
                }
                else
                {
                    bytes[bytePos] &= (byte)(~(byte)Math.Pow(2, bitPos));       // is false
                }
                numBytes += 0.125;
                break;

            case "Byte":
                numBytes       = (int)Math.Ceiling(numBytes);
                bytePos        = (int)numBytes;
                bytes[bytePos] = (byte)propertyValue;
                numBytes++;
                break;

            case "Int16":
                bytes2 = Int.ToByteArray((Int16)propertyValue);
                break;

            case "UInt16":
                bytes2 = Word.ToByteArray((UInt16)propertyValue);
                break;

            case "Int32":
                bytes2 = DInt.ToByteArray((Int32)propertyValue);
                break;

            case "UInt32":
                bytes2 = DWord.ToByteArray((UInt32)propertyValue);
                break;

            case "Double":
                bytes2 = Double.ToByteArray((double)propertyValue);
                break;

            case "Single":
                bytes2 = Single.ToByteArray((float)propertyValue);
                break;

            default:
                numBytes = ToBytes(propertyValue, bytes, numBytes);
                break;
            }

            if (bytes2 != null)
            {
                // add them
                numBytes = Math.Ceiling(numBytes);
                if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0)
                {
                    numBytes++;
                }
                bytePos = (int)numBytes;
                for (int bCnt = 0; bCnt < bytes2.Length; bCnt++)
                {
                    bytes[bytePos + bCnt] = bytes2[bCnt];
                }
                numBytes += bytes2.Length;
            }

            return(numBytes);
        }