JavaScript: Java String.hashCode()


Как-то раз столкнулся с необходимостью сгенерировать в Javascript хэш из строки. Да не просто сгенерировать, а так, что бы он полностью совпал с хэшем, сделанным в Java. Полазил в интернете и нашел.

String.prototype.hashCode = function() {
    var hash = 0;
 
    try {
    
        if (this.length == 0) return hash;
 
        for (i = 0; i < this.length; i++) {
            char = this.charCodeAt(i);
            hash = ((hash << 5) - hash) + char;
            hash = hash & hash; // Convert to 32bit integer
        }
        return hash;
        
    } catch (e) {
        throw new Error('hashCode: ' + e);
    }
};

Ссылка в gists.

🗓 05.03.2014 17:14     👀 4.5 тыс.