gpt4 book ai didi

ios - 这个散列保证是唯一的吗?

转载 作者:可可西里 更新时间:2023-11-01 05:12:44 25 4
gpt4 key购买 nike

我需要唯一标识一对 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

好吧,现在我知道无论哈希组合的顺序如何,我都会得到相同的值。那挺好的。但是这个值能保证是唯一的吗?或者 id 的组合 322233322233322233 可能会产生与 combinedHash 相同的值?如果是这样,那么如何为一对 ID 制作唯一标识符?

最佳答案

在不了解 ObjectiveC 的情况下,看起来您只是对值进行异或运算。
这当然不是独一无二的。
101^100 = 001
001^000 = 001
就这么简单。

它必须是不可逆的哈希值还是只需要一个唯一的 ID?
后者:只是连接,中间有一个唯一的分隔符。
否则,根据可能的最大输入长度,唯一哈希可能是不可能的。
(没有发明一个全新的算法,这可能需要时间:))

编辑,关于两种可能的连接顺序:
只需在连接之前比较两个数字,然后将较小的数字放在第一位即可。
这样一来,任何按 ID 的搜索都不必重复两次。

关于ios - 这个散列保证是唯一的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21644586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com