class Array

Public Instance Methods

append_sint(number, byte) click to toggle source
# File lib/core_ext.rb, line 22
def append_sint(number, byte)
  raise 'Insufficient bytes' if number.abs >= (1 << (byte * 8))

  sign = (number < 0) ? 1 : 0
  number &= (1 << ((byte * 8) - 1)) - 1
  self.append_uint(number, byte)
  self << (self.pop | (sign << 7))
end
append_uint(number, byte) click to toggle source
# File lib/core_ext.rb, line 2
def append_uint(number, byte)
  raise 'Only support unsigned integer' if number < 0
  raise 'Insufficient bytes' if number.abs >= (1 << (byte * 8))

  until byte == 0
    self << (number & 0xFF)
    number >>= 8
    byte -= 1
  end
  self
end
to_sint() click to toggle source
# File lib/core_ext.rb, line 31
def to_sint
  sign = (self.last & 0x80 != 0) ? (-1 ^ ((1 << ((self.size * 8) - 1)) - 1)) : 0
  sign | self.to_uint
end
to_uint() click to toggle source
# File lib/core_ext.rb, line 14
def to_uint
  int = 0
  self.each_with_index do |byte, index|
    int |= (byte << (index * 8))
  end
  int
end