Ejemplo n.º 1
0
        public void Process(string fileName, ByteObject obj)
        {
            int starts   = Int32.Parse(obj.ByteStarts, NumberStyles.HexNumber);
            int finish   = Int32.Parse(obj.ByteFinish, NumberStyles.HexNumber);
            int diff     = finish - starts + 1;
            int pos      = starts;
            int required = diff;

            // https://www.dotnetperls.com/seek
            var outArray = new byte[required];

            // 1.
            // Open as binary file.
            var inFile  = GetInputFile(fileName);
            var outFile = $"output/{fileName}/data/" + obj.ByteString;

            using (BinaryReader b = new BinaryReader(inFile))
            {
                int length = (int)b.BaseStream.Length;
                int count  = 0;

                // 3.
                // Seek the required index.
                b.BaseStream.Seek(pos, SeekOrigin.Begin);

                // 4.
                // Slow loop through the bytes.
                while (pos < length && count < required)
                {
                    byte y = b.ReadByte();
                    // 5.
                    // Increment the variables.

                    outArray[count] = y;
                    pos++;
                    count++;
                }
            }

            FileStream   fs = new FileStream(outFile, FileMode.Create, FileAccess.ReadWrite);
            BinaryWriter bw = new BinaryWriter(fs);

            bw.Write(outArray);
            bw.Close();
        }
Ejemplo n.º 2
0
        public void Process(string fileName, string extension)
        {
            ByteObjectList.Clear();

            var inpFile = fileName + extension;
            var outFile = "main" + extension;

            var lines = File.ReadAllLines("input/" + inpFile);
            var count = 0;

            for (int index = 0; index < lines.Length; index++)
            {
                var line = lines[index];
                if (line.Contains("incbin ..."))
                {
                    var info = String.Empty;
                    if (lines[index - 2].Trim().EndsWith(":") && lines[index - 2].Contains("$"))
                    {
                        info = lines[index - 3];
                    }
                    else if (lines[index - 1].Contains("_DATA_"))
                    {
                        info = lines[index - 2];
                    }
                    else
                    {
                        info = lines[index - 1];
                    }

                    ByteObject obj = CalcByteObject(info, count++);
                    ByteObjectList.Add(obj);

                    var destFile = String.Format(@"""data/{0}""", obj.ByteString);
                    line         = line.Replace("...", destFile);
                    lines[index] = line;
                }
            }

            string path = $"output/{fileName}/{outFile}";

            File.WriteAllLines(path, lines);
        }