Как начать цикл не в перовом байте файла?
/// <summary>
        /// Get bytes from file
        /// </summary>
        /// <param name="path">path to file</param>
        /// <param name="startByte">0 based position</param>
        /// <param name="bytesToRead">Count of bytes to read</param>
        /// <returns></returns>
        public static string[] GetXData(string path, int startByte, int bytesToRead)
        {
            try
            {
                var header = new string[bytesToRead];
                using var stream = File.OpenRead(path);
                stream.Seek(startByte, SeekOrigin.Begin); // перемещаем указатель в позицию
               // увеличиваем от 0 до длины буфера!!!
                for (var i = 0; i < header.Length ; i++)
                {
                     // когда читаем по байту сдвиг указателя происходит автоматически
                    header[i] = (stream.ReadByte().ToString("X2"));
                }
                return header;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return new string[0];
            }
        }
А для чего к длине файла добавлять startbyte? У вас пооучается длина ыайла +4 и т.д.