Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="target"></param>
        /// <param name="header"></param>
        /// <param name="offset"></param>
        protected virtual void WriteHeader(Stream target, EdataHeader header, uint offset)
        {
            target.Seek(offset, SeekOrigin.Begin);

            byte[] rawHeader = MiscUtilities.StructToBytes(header);
            target.Write(rawHeader, 0, rawHeader.Length);
        }
        /// <summary>
        /// Reads the header of raw bytes.
        /// </summary>
        /// <returns>A instance of the current header.</returns>
        protected EdataHeader ReadEdataHeader(byte[] rawData)
        {
            var header = new EdataHeader(this);

            using (MemoryStream stream = new MemoryStream(rawData, 0, rawData.Length))
            {
                var buffer = new byte[4];

                stream.Seek(0x19, SeekOrigin.Begin);
                stream.Read(buffer, 0, 4);
                header.DirOffset = BitConverter.ToInt32(buffer, 0);

                stream.Read(buffer, 0, 4);
                header.DirLengh = BitConverter.ToInt32(buffer, 0);

                stream.Read(buffer, 0, 4);
                header.FileOffset = BitConverter.ToInt32(buffer, 0);

                stream.Read(buffer, 0, 4);
                header.FileLengh = BitConverter.ToInt32(buffer, 0);
            }

            return(header);
        }
        /// <summary>
        /// Reads the header of the current package.
        /// </summary>
        /// <returns>A instance of the current header.</returns>
        protected EdataHeader ReadEdataHeader()
        {
            var header = new EdataHeader(this);

            using (FileStream fileStream = File.Open(FilePath, FileMode.Open))
            {
                var buffer = new byte[4];

                fileStream.Seek(0x19, SeekOrigin.Begin);
                fileStream.Read(buffer, 0, 4);
                header.DirOffset = BitConverter.ToInt32(buffer, 0);

                fileStream.Read(buffer, 0, 4);
                header.DirLengh = BitConverter.ToInt32(buffer, 0);

                fileStream.Read(buffer, 0, 4);
                header.FileOffset = BitConverter.ToInt32(buffer, 0);

                fileStream.Read(buffer, 0, 4);
                header.FileLengh = BitConverter.ToInt32(buffer, 0);
            }

            return(header);
        }