[Tutor] back on bytes

Terry Carroll carroll at tjc.com
Sat Jul 7 09:37:59 CEST 2007


On Fri, 6 Jul 2007, Jerry Hill wrote:

> In your formula ( (176 & 127) * 256 + 192 ) you're only using 7 bits
> of your high byte.  Why are you masking off that last bit?  

I know in MP3 files, some of the ID3 lengths are coded this way, i.e. as a
four-byte field, each byte of which has the high-order bit set to zero,
and the other seven bits significant, for a total of a 28-bit integer.

For example, 0x00000101 would equal 129 (not 257, as one would expect).

Scrounging through some old code, I used to use this to pull out the 
length:

def ID3TagLength(s):
    """
    Given a 4-byte string s, decode as ID3 tag length
    """
    return (ord(s[0]) * 0x200000 +
            ord(s[1]) *   0x4000 +
            ord(s[2]) *     0x80 +
            ord(s[3]) )





More information about the Tutor mailing list