Старожил
Сообщения: 241
Благодарности: 1
|
Профиль
|
Отправить PM
| Цитировать
Можете подсказать какое условие нужно указать, чтобы возвращалось нужное значение, а не первое попавшееся.
В конкретном примере нужно значение JPG, а возвращается первое PSD
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication9
{
class Program
{
static void Main(string[] args)
{
byte[] content = File.ReadAllBytes(@"D:\error.jpg");
Data Newdata = new Data();
Newdata.Format(content);
Console.ReadLine();
}
}
public class Data
{
public byte[] bytes;
public string name;
List<Data> formats = new List<Data>();
public string Format(byte[] content)
{
formats.Add(new Data() { name = "PNG", bytes = new byte[] { 137, 80, 78, 71, 13, 10, 26, 10 } });
formats.Add(new Data() { name = "ACCDB", bytes = new byte[] { 0, 1, 0, 0, 83, 116, 97, 110, 100, 97, 114, 100, 32, 65, 67, 69, 32, 68, 66 } });
formats.Add(new Data() { name = "MDB", bytes = new byte[] { 0, 1, 0, 0, 83, 116, 97, 110, 100, 97, 114, 100, 32, 74, 101, 116, 32, 68, 66 } });
formats.Add(new Data() { name = "IMG", bytes = new byte[] { 0, 1, 0, 8, 0, 1, 0, 1, 1 } });
formats.Add(new Data() { name = "MDF", bytes = new byte[] { 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 2, 0, 1 } });
formats.Add(new Data() { name = "PIC", bytes = new byte[] { 1, 0, 0, 0, 1 } });
formats.Add(new Data() { name = "MDF", bytes = new byte[] { 1, 15, 0, 0 } });
formats.Add(new Data() { name = "XLS", bytes = new byte[] { 9, 8, 16, 0, 0, 6, 5, 0 } });
formats.Add(new Data() { name = "DOC", bytes = new byte[] { 13, 68, 79, 67 } });
formats.Add(new Data() { name = "PPT", bytes = new byte[] { 15, 0, 232, 8 } });
formats.Add(new Data() { name = "PDF", bytes = new byte[] { 37, 80, 68, 70 } });
formats.Add(new Data() { name = "7Z", bytes = new byte[] { 55, 122, 188, 175, 39, 28 } });
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.Where(x => content.SequenceEqual(x.bytes))
.Select(x => x.name)
.FirstOrDefault();
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;
Console.WriteLine(extension);
}
return extension;
}
}
}
|