ios – 这个哈希保证是唯一的吗?

ios – 这个哈希保证是唯一的吗?,第1张

概述我需要唯一识别一对Facebook用户ID.这就是我这样做的方式: NSString *firstId = @"123456789";NSString *secondId = @"987654321";NSUInteger first_hash = [firstId hash];NSUInteger second_hash = [secondId hash];NSUInteger c 我需要唯一识别一对Facebook用户ID.这就是我这样做的方式:

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 – 这个哈希保证是唯一的吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1006070.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存