репликация хэш-функции javascript для java / kotlin

Я работаю над многоплатформенным приложением, и я закончил базу данных и веб-версию. Чтобы проверить код в веб-версии, я получаю хешированную версию из базы данных и сравниваю ее. Я использую этот код javascript для hash (я нашел это по другому вопросу ):

hashCode = function(s){ return s.split("").reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a},0); } 

Теперь мне нужно сделать то же самое в моем приложении для Android, но я не знаю, как создать функцию, которая выводит то же самое в java или kotlin. Кто-нибудь знает, как это сделать или есть другое решение для кросс-платформенных ванили?

Заранее спасибо.

Редактировать: я очень новичок в kotlin / java, поэтому я знаю только то, что я могу найти в Интернете, и что я знаю о других языках. Я пытался удалить как можно больше ошибок, но некоторые вещи, которые я просто не знаю, все равно дают ошибки:

  fun go (a: Int, b: String): Int { var a = ((a shl 5) - a) + Character.codePointAt(b,0); return a and a } // this part doesn't give any errors now. fun hashCode(s: String): String { return s.split("").reduce(go(a,b)) // I don't know what to pass as parameters + reduce gives an error } 

Если вы заинтересованы в получении хеш-кода и не копируете функцию javascript в kotlin самостоятельно, я предлагаю вам использовать этот один вкладыш.

 val s:String = "aaaa"; println(s.hashCode()); 

Выход: 2986048

Я проверил с версией javascript, это то же самое.

Вот документация для hashCode в kotlin

open fun hashCode (): Int (источник)

Возвращает значение хэш-кода для объекта. Общий контракт hashCode:

Всякий раз, когда он вызывается одним и тем же объектом более одного раза, метод hashCode должен последовательно возвращать одно и то же целое число, при условии, что информация, используемая при равных сравнениях с объектом, не изменяется.

Если два объекта равны в соответствии с методом equals (), то вызов метода hashCode для каждого из двух объектов должен давать одинаковый целочисленный результат.

Intereting Posts
Функции расширения Котлина и функции-члены? Разница между типами List и Array в Котлине присваивать переменную только в том случае, если она равна нулю Kotlin Closable и SQLiteDatabase на Android Измените фильтр цветного элемента элемента навигации и измените изображение, которое использует одинаковый идентификатор изображения Тестирование приложения Android Kotlin – Mockito с кинжалом вводит нуль Упрощение кода, который является одинаковым удовольствием, за исключением подписи (varargs vs map) Класс Kotlin не получает свое булево значение от firebase При создании интерфейса в Kotlin имеет значение, если свойства get / set? Какое надлежащее обходное решение для @BeforeAll в Котлине Текстовое изображение потока вокруг изображения Как высмеять функцию верхнего уровня в котлине с помощью jmockit Kotlin coroutines: использование синхронного использования cassandra vs для перевода асинхронного использования Как найти поисковую панель на панели инструментов, например google? Котлин и неизменные коллекции?