public static UInt64 GetUInt64(byte[] value, FFEndianType endian, int offset, int length)
        {
            FFUInt64 ffValue = new FFUInt64();

            if (endian == FFEndianType.BigEndian)
            {
                ffValue.Value1 = value[0];
                ffValue.Value2 = value[1];
                ffValue.Value3 = value[2];
                ffValue.Value4 = value[3];
                ffValue.Value5 = value[4];
                ffValue.Value6 = value[5];
                ffValue.Value7 = value[6];
                ffValue.Value8 = value[7];
            }
            else
            {
                ffValue.Value1 = value[7];
                ffValue.Value2 = value[6];
                ffValue.Value3 = value[5];
                ffValue.Value4 = value[4];
                ffValue.Value5 = value[3];
                ffValue.Value6 = value[2];
                ffValue.Value7 = value[1];
                ffValue.Value8 = value[0];
            }
            return(ffValue.Value);
        }
        public static byte[] GetUInt32Bytes(UInt32 value, FFEndianType endian)
        {
            FFUInt32 ffValue = new FFUInt32()
            {
                Value = value
            };

            byte[] result = new byte[4];

            if ((endian == FFEndianType.BigEndian && SystemEndianType == FFEndianType.LittleEndian) ||
                (endian == FFEndianType.LittleEndian && SystemEndianType == FFEndianType.BigEndian))
            {
                result[0] = ffValue.Value4;
                result[1] = ffValue.Value3;
                result[2] = ffValue.Value2;
                result[3] = ffValue.Value1;
            }
            else
            {
                result[0] = ffValue.Value1;
                result[1] = ffValue.Value2;
                result[2] = ffValue.Value3;
                result[3] = ffValue.Value4;
            }
            return(result);
        }
        public static byte[] GetUInt64Bytes(UInt64 value, FFEndianType endian)
        {
            FFUInt64 ffValue = new FFUInt64()
            {
                Value = value
            };

            byte[] result = new byte[8];

            if ((endian == FFEndianType.BigEndian && SystemEndianType == FFEndianType.LittleEndian) ||
                (endian == FFEndianType.LittleEndian && SystemEndianType == FFEndianType.BigEndian))
            {
                result[0] = ffValue.Value8;
                result[1] = ffValue.Value7;
                result[2] = ffValue.Value6;
                result[3] = ffValue.Value5;
                result[4] = ffValue.Value4;
                result[5] = ffValue.Value3;
                result[6] = ffValue.Value2;
                result[7] = ffValue.Value1;
            }
            else
            {
                result[0] = ffValue.Value1;
                result[1] = ffValue.Value2;
                result[2] = ffValue.Value3;
                result[3] = ffValue.Value4;
                result[4] = ffValue.Value5;
                result[5] = ffValue.Value6;
                result[6] = ffValue.Value7;
                result[7] = ffValue.Value8;
            }
            return(result);
        }
 public static UInt16 GetUInt16(byte[] value, FFEndianType endian, int offset, int length)
 {
     FFUInt16 ffValue = new FFUInt16();
     if (endian == FFEndianType.BigEndian)
     {
         ffValue.Value1 = value[0];
         ffValue.Value2 = value[1];
     }
     else
     {
         ffValue.Value1 = value[1];
         ffValue.Value2 = value[0];
     }
     return ffValue.Value;
 }
        public static UInt16 GetUInt16(byte[] value, FFEndianType endian, int offset, int length)
        {
            FFUInt16 ffValue = new FFUInt16();

            if (endian == FFEndianType.BigEndian)
            {
                ffValue.Value1 = value[0];
                ffValue.Value2 = value[1];
            }
            else
            {
                ffValue.Value1 = value[1];
                ffValue.Value2 = value[0];
            }
            return(ffValue.Value);
        }
        public static byte[] GetInt16Bytes(Int16 value, FFEndianType endian)
        {
            FFInt16 ffValue = new FFInt16() { Value = value };
            byte[] result = new byte[2];

            if ((endian == FFEndianType.BigEndian && SystemEndianType == FFEndianType.LittleEndian) ||
                (endian == FFEndianType.LittleEndian && SystemEndianType == FFEndianType.BigEndian))
            {
                result[0] = ffValue.Value2;
                result[1] = ffValue.Value1;
            }
            else
            {
                result[0] = ffValue.Value1;
                result[1] = ffValue.Value2;
            }
            return result;
        }
        public static Int32 GetInt32(byte[] value, FFEndianType endian, int offset, int length)
        {
            FFInt32 ffValue = new FFInt32();

            if (endian == FFEndianType.BigEndian)
            {
                ffValue.Value1 = value[0];
                ffValue.Value2 = value[1];
                ffValue.Value3 = value[2];
                ffValue.Value4 = value[3];
            }
            else
            {
                ffValue.Value1 = value[3];
                ffValue.Value2 = value[2];
                ffValue.Value3 = value[1];
                ffValue.Value4 = value[0];
            }
            return(ffValue.Value);
        }
        public static byte[] GetInt16Bytes(Int16 value, FFEndianType endian)
        {
            FFInt16 ffValue = new FFInt16()
            {
                Value = value
            };

            byte[] result = new byte[2];

            if ((endian == FFEndianType.BigEndian && SystemEndianType == FFEndianType.LittleEndian) ||
                (endian == FFEndianType.LittleEndian && SystemEndianType == FFEndianType.BigEndian))
            {
                result[0] = ffValue.Value2;
                result[1] = ffValue.Value1;
            }
            else
            {
                result[0] = ffValue.Value1;
                result[1] = ffValue.Value2;
            }
            return(result);
        }
 public static Int32 GetInt32(byte[] value, FFEndianType endian, int offset, int length)
 {
     FFInt32 ffValue = new FFInt32();
     if (endian == FFEndianType.BigEndian)
     {
         ffValue.Value1 = value[0];
         ffValue.Value2 = value[1];
         ffValue.Value3 = value[2];
         ffValue.Value4 = value[3];
     }
     else
     {
         ffValue.Value1 = value[3];
         ffValue.Value2 = value[2];
         ffValue.Value3 = value[1];
         ffValue.Value4 = value[0];
     }
     return ffValue.Value;
 }
 public static UInt16 GetUInt16(byte[] value, FFEndianType endian)
 {
     return GetUInt16(value, endian, 0, 2);
 }
 public static UInt32 GetUInt32(byte[] value, FFEndianType endian)
 {
     return(GetUInt32(value, endian, 0, 4));
 }
        public static byte[] GetUInt64Bytes(UInt64 value, FFEndianType endian)
        {
            FFUInt64 ffValue = new FFUInt64() { Value = value };
            byte[] result = new byte[8];

            if ((endian == FFEndianType.BigEndian && SystemEndianType == FFEndianType.LittleEndian) ||
                (endian == FFEndianType.LittleEndian && SystemEndianType == FFEndianType.BigEndian))
            {
                result[0] = ffValue.Value8;
                result[1] = ffValue.Value7;
                result[2] = ffValue.Value6;
                result[3] = ffValue.Value5;
                result[4] = ffValue.Value4;
                result[5] = ffValue.Value3;
                result[6] = ffValue.Value2;
                result[7] = ffValue.Value1;
            }
            else
            {
                result[0] = ffValue.Value1;
                result[1] = ffValue.Value2;
                result[2] = ffValue.Value3;
                result[3] = ffValue.Value4;
                result[4] = ffValue.Value5;
                result[5] = ffValue.Value6;
                result[6] = ffValue.Value7;
                result[7] = ffValue.Value8;
            }
            return result;
        }
 public static UInt64 GetUInt64(byte[] value, FFEndianType endian, int offset, int length)
 {
     FFUInt64 ffValue = new FFUInt64();
     if (endian == FFEndianType.BigEndian)
     {
         ffValue.Value1 = value[0];
         ffValue.Value2 = value[1];
         ffValue.Value3 = value[2];
         ffValue.Value4 = value[3];
         ffValue.Value5 = value[4];
         ffValue.Value6 = value[5];
         ffValue.Value7 = value[6];
         ffValue.Value8 = value[7];
     }
     else
     {
         ffValue.Value1 = value[7];
         ffValue.Value2 = value[6];
         ffValue.Value3 = value[5];
         ffValue.Value4 = value[4];
         ffValue.Value5 = value[3];
         ffValue.Value6 = value[2];
         ffValue.Value7 = value[1];
         ffValue.Value8 = value[0];
     }
     return ffValue.Value;
 }
 public static UInt64 GetUInt64(byte[] value, FFEndianType endian)
 {
     return GetUInt64(value, endian, 0, 8);
 }
        public static byte[] GetUInt32Bytes(UInt32 value, FFEndianType endian)
        {
            FFUInt32 ffValue = new FFUInt32() { Value = value };
            byte[] result = new byte[4];

            if ((endian == FFEndianType.BigEndian && SystemEndianType == FFEndianType.LittleEndian) ||
                (endian == FFEndianType.LittleEndian && SystemEndianType == FFEndianType.BigEndian))
            {
                result[0] = ffValue.Value4;
                result[1] = ffValue.Value3;
                result[2] = ffValue.Value2;
                result[3] = ffValue.Value1;
            }
            else
            {
                result[0] = ffValue.Value1;
                result[1] = ffValue.Value2;
                result[2] = ffValue.Value3;
                result[3] = ffValue.Value4;
            }
            return result;
        }
 static FFDataTypeHelper()
 {
     SystemEndianType = FindSystemEndianType();
 }
 public static UInt32 GetUInt32(byte[] value, FFEndianType endian)
 {
     return GetUInt32(value, endian, 0, 4);
 }
 static FFDataTypeHelper()
 {
     SystemEndianType = FindSystemEndianType();
 }
 public static UInt64 GetUInt64(byte[] value, FFEndianType endian)
 {
     return(GetUInt64(value, endian, 0, 8));
 }
 public static UInt16 GetUInt16(byte[] value, FFEndianType endian)
 {
     return(GetUInt16(value, endian, 0, 2));
 }