Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2014, 15:44   #1
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию Условие для возвращения нужного значения

Можете подсказать какое условие нужно указать, чтобы возвращалось нужное значение, а не первое попавшееся.
В конкретном примере нужно значение 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;
          
       }
REztor вне форума Ответить с цитированием
Старый 07.03.2014, 15:55   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

почему не применить Equals?
ток вам надо чтоб и длины массивов одинаковые были.
с LINQ будет вообще что-то вроде этого:
Код:
var format=formats.Select(e=>o.bytes.Equals(content));
ток не проверял.(вернет список форматов что подходят)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.03.2014, 16:03   #3
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
почему не применить Equals?
ток вам надо чтоб и длины массивов одинаковые были.
с LINQ будет вообще что-то вроде этого:
Код:
var format=formats.Select(e=>o.bytes.Equals(content));
ток не проверял.(вернет список форматов что подходят)
Одинаковые у меня они точно почти никогда не будут.


Условие какое-то нужно перед этим ставить, потому что здесь получаю значение не то, что нужно
Код:
extension = format.name;
REztor вне форума Ответить с цитированием
Старый 07.03.2014, 16:32   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
{
            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 } });
            return formats.FirstOrDefault(o =>
                {
                    byte[] t = new byte[o.bytes.Length];
                    Array.Copy(content,t,t.Length);
                    return t.SequenceEqual(o.bytes);
                }).name;
        }
как-то так.
но это Linq.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в Excel 2010 сделать макрос для поиска нужного значения Сергей Ш. Microsoft Office Excel 4 03.04.2013 09:36
Добавление нужного значения для массива данных RedStorm Microsoft Office Excel 1 20.02.2013 11:52
Чтение cookie и нахождение нужного значения bebecap Общие вопросы Delphi 5 22.09.2009 23:35
Delphi и Oracle ПРоблема возвращения значения! nimf БД в Delphi 0 27.10.2008 11:10
Подскажите пожалуйста чем удобнее воспользоваться для поиска нужного значения Ivo4ka Microsoft Office Excel 9 01.10.2007 20:17