Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Условие для возвращения нужного значения


Автор: WingfirE 7.3.2014, 15:26
Можете подсказать какое условие нужно указать, чтобы возвращалось нужное значение, а не первое попавшееся.
В конкретном примере нужно значение JPG, а возвращается первое PSD
Код

public string Format(byte[] content)
        {
            formats.Add(new Data() { name = "PSD", bytes = new byte[] { 56, 66, 80, 83 } });
            formats.Add(new Data() { name = "JPG", bytes = new byte[] { 255, 216, 255, 224 } });
            string extension = "";
            foreach (Data format in formats)
            {
                for (int i = 0; i < format.bytes.Length; i++)
                {
                    
                    if (format.bytes[i] == content[i])
                    {
                        continue;
                     
                    }
                    else
                    
                    if (format.bytes[i] != content[i])
                    {
                       Console.WriteLine("Сравниваемые байты не равны");
                       
                    }
 
                    
               }
 
               extension = format.name;
            }
           
           return extension;
          
       }

Автор: jonie 7.3.2014, 22:14
ну например так:
Код

    public static string Format(byte[] content)
        {
            formats.Add(new Data() { name = "PSD", bytes = new byte[] { 56, 66, 80, 83 } });
            formats.Add(new Data() { name = "JPG", bytes = new byte[] { 255, 216, 255, 224 } });
            foreach (Data format in formats)
            {
                int fmtMarkLen = format.bytes.Length;
                if(fmtMarkLen > content.Length) continue;
                
                int i;
                for (i = 0; i < fmtMarkLen; i++)
                {
                    if (format.bytes[i] != content[i])
                    {
                        break;
                    }
               }
               if(i==fmtMarkLen) return format.name;
            }
           
           return "N/A";
          
       }

Автор: WingfirE 13.3.2014, 21:19
Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)