Module: Pack::Numbers::PackedInt56LE
- Defined in:
- lib/pack/numbers.rb
Class Method Summary collapse
Class Method Details
.read(input, header) ⇒ Object
70 71 72 73 74 75 |
# File 'lib/pack/numbers.rb', line 70 def self.read(input, header) flags = (0..6).reject { |i| header & (1 << i) == 0 } bytes = flags.map { |i| input.readbyte << (8 * i) } bytes.reduce(0) { |a, b| a | b } end |
.write(value) ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/pack/numbers.rb', line 61 def self.write(value) bytes = (0..6).map { |i| (value >> (8 * i)) & 0xff } flags = bytes.map.with_index { |b, i| b == 0 ? 0 : 1 << i } header = flags.reduce(0) { |a, b| a | b } [header] + bytes.reject { |b| b == 0 } end |