Nsstring *firstID = @"123456789";Nsstring *secondID = @"987654321";NSUInteger first_hash = [firstID hash];NSUInteger second_hash = [secondID hash];NSUInteger combinedHash = first_hash ^ second_hash;NSUInteger reverseHash = second_hash ^ first_hash;NSLog(@"Combined hash %d\nReverse hash %d",combinedHash,reverseHash); // both are equal
好的,现在我知道无论哈希组合的顺序如何,我都得到相同的值.非常好.但这个价值是否保证是唯一的?或者IDs说322233322和233322233的组合可能产生与combinedHash相同的值?如果是,那么如何为一对ID创建唯一标识符?
解决方法 如果不了解ObjectiveC,看起来你只是对价值观进行异化.当然,这不是唯一的.
101 ^ 100 = 001
001 ^ 000 = 001
这很容易.
它必须是不可逆转的哈希还是只需要一个唯一的ID?
后者:只是连接,之间有一个独特的分隔符.
否则,根据最大可能的输入长度,可能不可能有唯一的散列.
(没有发明一个全新的算法,这可能需要时间:))
编辑,关于两个可能的连接顺序:只需在连接之前比较两个数字,然后将较小的数字放在第一位.这样,任何ID搜索都不能进行两次.
总结以上是内存溢出为你收集整理的ios – 这个哈希保证是唯一的吗?全部内容,希望文章能够帮你解决ios – 这个哈希保证是唯一的吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)