module JavaHashCode

Constants

VERSION

Public Class Methods

compute(string_value) click to toggle source

Computes hash for given string with Java hashCode algorithm

Example

JavaHashCode.compute('1234')    # 1509442
JavaHashCode.compute('ABC abc') # -489353340
JavaHashCode.compute('АБВ')     # 1032753
# File lib/java_hash_code.rb, line 12
def self.compute(string_value)
  return 0 if string_value.nil? || string_value.empty?
  hash = 0

  power = string_value.size - 1
  string_value.each_char do |char|
    hash += char.ord * (31 ** power)
    power -= 1
  end

  [hash].pack('L').unpack('l')[0]
end