Class: Array

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

Instance Method Summary collapse

Instance Method Details

#append_sint(number, byte) ⇒ Object



22
23
24
25
26
27
28
29
# 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) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
# 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_sintObject



31
32
33
34
# 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_uintObject



14
15
16
17
18
19
20
# 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