У меня есть небольшой байтовый массив (до 25 КБ), который я получаю и декодирую как часть большого конверта сообщения.Иногда это изображение, а когда оно и изображение, то иногда это jpg.У меня нет никакой контекстной информации, кроме байтового массива, и мне нужно идентифицировать как изображение, так и изображение типа jpg.
Есть ли какое-то магическое число или магические байты, которые существуют в начале, конце или с некоторым смещением, на которое я могу посмотреть, чтобы идентифицировать его?
Пример моего кода выглядит следующим образом (из памяти, а не с / п):
byte[] messageBytesAfterDecode = retrieveBytesFromEnvelope();
if(null != messageBytesAfterDecode && messageBytesAfterDecode > 0){
if(areTheseBytesAJpeg(messageBytesAfterDecode)){
doSomethingWithAJpeg(messageBytesAfterDecode)
}else{
flagEnvelopeAsHavingBadContentInTheField();
}
}
Мне действительно нужно то, что войдет в
areTheseBytesAJpeg(byte[] mBytes){}
метод, или даже указатель на спецификацию, которая его детализирует.Я надеюсь, что есть очень быстрый способ сделать это определение, так как я действительно не хочу читать их в изображение и т. Д.