FAQ: What does that final condition in the JPG signature check mean?
if (buffer[0] == 0xff && buffer[1] == 0xd8 && buffer[2] == 0xff && (buffer[3] & 0xf0) == 0xe0)
The & is the bitwise AND operator. It can be used as a “mask” to let us concentrate on only some bits in a number. When you AND two bits together, the result is 1 if both bits are set to 1, otherwise it’s 0.
Per the spec:
The fourth byte, meanwhile, is either
0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee, or0xef. Put another way, the fourth byte’s first four bits are1110.
So, in other words, we want to check that the first 4 bits of the byte are 1110. We can do this by ‘masking’ away the final four bits. The value 0xf0 (11110000) works well for this since it has all first 4 bits and last 4 bits off. So the result of any number ANDed with it will have its last 4 bits off no matter what, so we can concentrate on the first 4 bits only.
Let’s look at an example. Say that buffer[3] is equal to 0xe6.
0xe6 11100110
0xf0 11110000
0xe6 & 0xf0 11100000 (that's 0xe0) so that's a match
or, say that buffer[3] is 0xc7
0xc7 11000111
0xf0 11110000
0xc7 & 0xf0 11000000 (that's 0xc0) so that's not a match
Using the bitwise AND in our condition is a quick way to compare one number to a range of others in one step.
More information about bitwise in C: Bitwise Operations in C - wikipedia