Module: Pack::Numbers::VarIntBE

Defined in:
lib/pack/numbers.rb

Class Method Summary collapse

Class Method Details

.read(input) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
# File 'lib/pack/numbers.rb', line 47

def self.read(input)
  byte  = input.readbyte
  value = byte & 0x7f

  until byte < 0x80
    byte  = input.readbyte
    value = ((value + 1) << 7) | (byte & 0x7f)
  end

  value
end

.write(value) ⇒ Object



36
37
38
39
40
41
42
43
44
45
# File 'lib/pack/numbers.rb', line 36

def self.write(value)
  bytes = [value & 0x7f]

  until (value >>= 7) == 0
    value -= 1
    bytes.push(0x80 | value & 0x7f)
  end

  bytes.reverse.pack("C*")
end