module OpenRAReplay::Binary

Public Instance Methods

decode_u32(string) click to toggle source
# File lib/openrareplay/binary.rb, line 55
def decode_u32(string)
  string.unpack('_L').first
end
decode_u8(string) click to toggle source
# File lib/openrareplay/binary.rb, line 59
def decode_u8(string)
  string.unpack('C').first
end
decode_uleb128_io(input, hash = {}) click to toggle source
# File lib/openrareplay/binary.rb, line 35
def decode_uleb128_io(input, hash = {})
  val = 0
  shift = 0
  read_bytes = ''.force_encoding('ASCII-8BIT')
  loop do
    byte = input.read 1
    read_bytes += byte if hash[:output_read]
    byte = byte.ord
    val |= (byte & 0x7F) << shift
    break if (byte >> 7).zero?
    shift += 7
  end
  return [val, read_bytes] if hash[:output_read]
  val
end
encode_u32(integer) click to toggle source
# File lib/openrareplay/binary.rb, line 51
def encode_u32(integer)
  [integer].pack('_L')
end
encode_uleb128(val) click to toggle source
# File lib/openrareplay/binary.rb, line 23
def encode_uleb128(val)
  bytes = ''.force_encoding('ASCII-8BIT')
  loop do
    byte = val & 0x7F
    val >>= 7
    byte |= 0x80 unless val.zero?
    bytes += byte.chr
    break if val.zero?
  end
  bytes
end