module BinaryFileStringUtils def byte_to_int self.unpack('U').first end def little_endian_to_int # source : http://stackoverflow.com/questions/5236059/unpack-signed-little-endian-in-ruby arr, bits, num = self.unpack('V*'), 0, 0 arr.each do |int| num += int << bits bits += 32 end num >= 2**(bits-1) ? num - 2**bits : num # Convert from unsigned to signed end end String.send :include, BinaryFileStringUtils