我在Flutter应用程序中错误地依赖String.hashCode的值,并将其存储在服务器端。现在,我希望能够在nodeJS中计算字符串的哈希码,并获得与dart相同的结果...
如何实现?在dart中找不到String.hashCode的实际实现。
答案 0 :(得分:0)
String.hashCode
的vm实现可以在github(https://github.com/dart-lang/sdk)的sdk存储库中找到:
示例:
答案 1 :(得分:0)
这是一个简单的 Swift 实现,它应该为 iOS 和 Flutter 中的简单字符串返回相同的 hashCode 值:
extension String {
func hashCode() -> UInt32 {
var hash: UInt32 = 0
for i in unicodeScalars.filter({ $0.isASCII }).map({ $0.value }) {
hash = hash &+ i
hash = hash &+ (hash << 10)
hash = hash ^ (hash >> 6)
}
hash = hash &+ (hash << 3)
hash = hash ^ (hash >> 11)
hash = hash &+ (hash << 15)
hash = hash & ((1 << 30) &- 1)
return (hash == 0) ? 1 : hash
}
}