[lug] magic number
Tkil
tkil at scrye.com
Sun Aug 7 23:08:14 MDT 2005
>>>>> "Jason" == Jason Davis <mohadib at openactive.org> writes:
Jason> So I'm writing an app that uses a files magic number to know if
Jason> it is a MP3. I got it working mostly , however , I think I
Jason> might be confused.
First off, if you can at all use it, just use 'file' itself. It has a
huge number of patterns in it.
Second, I was unaware that MP3s were stored in RIFF containers. Weird.
Third, RIFF is the little-endian version of AIFF. Any multi-byte
binary values will be written in little-endian format. So, when
dealing with a 16-bit "short", you have to read in the least
significant byte and then the more significant byte.
When I had to solve this problem myself, I investigated the format of
WAV and RIFF files, then built objects that could read and write
themselves. For primitives, I used objects that represented
individual little-endian bytes [identity, yes], 16-byte "shorts",
32-byte "ints" and 32-byte "floats". Then I can just read in the
whole structure and use normal c / c++ / java structure access to get
at it.
If those two bytes do hold a 16-bit little-endian "short" value of 85
decimal, then the two byte should be: 55 00 (respectively).
Or did I totally miss the point of your question?
t.
More information about the LUG
mailing list