Module: Pack::Numbers::PackedInt56LE

Defined in:
lib/pack/numbers.rb

Class Method Summary collapse

Class Method Details

.read(input, header) ⇒ Object



75
76
77
78
79
80
81
82
83
84
# File 'lib/pack/numbers.rb', line 75

def self.read(input, header)
  value = 0

  (0...7).each do |i|
    next if header & (1 << i) == 0
    value |= input.readbyte << (8 * i)
  end

  value
end

.write(value) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/pack/numbers.rb', line 61

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

  (0...7).each do |i|
    byte = (value >> (8 * i)) & 0xff
    next if byte == 0

    bytes[0] |= 1 << i
    bytes.push(byte)
  end

  bytes
end