diff --git a/Sources/FirebladeECS/Hashing.swift b/Sources/FirebladeECS/Hashing.swift index 9c2ed41..29b228d 100644 --- a/Sources/FirebladeECS/Hashing.swift +++ b/Sources/FirebladeECS/Hashing.swift @@ -91,10 +91,10 @@ public enum StringHashing { /// /// public static func singer_djb2(_ utf8String: String) -> UInt64 { - var hash = UInt64(5381) + var hash: UInt64 = 5381 var iter = utf8String.unicodeScalars.makeIterator() while let char = iter.next() { - hash = 127 * (hash & 0x00ffffffffffffff) &+ UInt64(char.value) + hash = 127 * (hash & 0xFFFFFFFFFFFFFF) &+ UInt64(char.value) } return hash } @@ -106,11 +106,11 @@ public enum StringHashing { /// The magic of number 33 (why it works better than many other constants, prime or not) has never been adequately explained. /// /// - public static func bernstein_djb2(_ string: String) -> UInt { - var hash: UInt = 5381 + public static func bernstein_djb2(_ string: String) -> UInt64 { + var hash: UInt64 = 5381 var iter = string.unicodeScalars.makeIterator() while let char = iter.next() { - hash = (hash << 5) &+ hash &+ UInt(char.value) + hash = (hash << 5) &+ hash &+ UInt64(char.value) } return hash } @@ -122,11 +122,11 @@ public enum StringHashing { /// It also happens to be a good general hashing function with good distribution. /// /// - public static func sdbm(_ string: String) -> UInt { - var hash: UInt = 0 + public static func sdbm(_ string: String) -> UInt64 { + var hash: UInt64 = 0 var iter = string.unicodeScalars.makeIterator() while let char = iter.next() { - hash = (UInt(char.value) &+ (hash << 6) &+ (hash << 16)) + hash = (UInt64(char.value) &+ (hash << 6) &+ (hash << 16)) } return hash }