Class: ID3Tag::SynchsafeInteger

Inherits:
Object
  • Object
show all
Defined in:
lib/id3tag/synchsafe_integer.rb

Class Method Summary collapse

Class Method Details

.decode(synchsafe_int) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/id3tag/synchsafe_integer.rb', line 16

def decode(synchsafe_int)
  out = 0
  mask = 0x7F000000
  while mask > 0
    out = out >> 1
    out |= (synchsafe_int & mask)
    mask = mask >> 8
  end
  out
end

.encode(int) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/id3tag/synchsafe_integer.rb', line 4

def encode(int)
  mask = 0x7F
  while mask <= 0x7FFFFFFF
    out = int & ~mask
    out = out << 1
    out |= (int & mask)
    mask = ((mask + 1) << 8) - 1
    int = out
  end
  out
end