I'm pretty sure that the "42" is 16-bits, so for the big endian case (MM) you could want to match the first 4 bytes on (M, M, 0, 42) instead of (M, M, 42), and for (II) you'd want (I, I, 42, 0). For example, here are the first bytes of a random TIFF file I looked at:

```
00000000  4d 4d 00 2a 00 02 c6 b6  80 3f e0 40 08 24 16 0d  |MM.*.....?.@.$..|
```