Kotlin не вызывает ошибок в случае переполнения целых чисел. Kotlin основан на JVM, поэтому он также не имеет неподписанных типов. Таким образом, вы можете просто добавить значения:
val hash : Int = ...
val bytes : ByteArray = ...
hash += bytes[i]
Конечно, Byte
также подписан в Kotlin, поэтому вам может потребоваться преобразование значений при его расширении:
val byte : Byte = bytes[i]
val byteAsInt : Int = byte.toInt()
if (byteAsInt < 0) byteAsInt = 255 + byteAsInt + 1
hash += byteAsInt