我有一个小字节数组(25K以下),我收到并解码为更大的消息信封的一部分.有时这是一个图像,当它是图像时,有时它是一个jpg.我没有字节数组以外的上下文信息,并且需要识别它是否是图像,以及图像是否为jpg类型.
是否有一些神奇的数字或魔术字节存在于开头,结尾或某些偏移处,我可以看一下来识别它?
我的代码示例如下(来自内存,而不是c / p):
byte[] messageBytesAfterDecode = retrieveBytesFromEnvelope();
if(null != messageBytesAfterDecode && messageBytesAfterDecode > 0){
if(areTheseBytesAJpeg(messageBytesAfterDecode)){
doSomethingWithAJpeg(messageBytesAfterDecode)
}else{
flagEnvelopeAsHavingBadContentInTheField();
}
}
我真的需要做什么
areTheseBytesAJpeg(byte[] mBytes){}
方法,甚至指向详细说明的规范的指针.我希望有一个非常快速的方法来做出这个决定,因为我真的不想把它们读成图像等.
解决方法:
来自*:
JPEG image files begin with FF D8 and end with FF D9.
http://en.wikipedia.org/wiki/Magic_number_(programming)