美文网首页OC Tips
NSArray-不可靠的Hash

NSArray-不可靠的Hash

作者: 旭宝爱吃鱼 | 来源:发表于2020-03-19 13:32 被阅读0次

Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

在这里有一段代码,猜猜看输出结果是什么?

NSArray *array_a = @[@"1", @"2", @"3"];
NSLog(@"a: %ld", array_a.hash);
NSArray *array_b = @[@"4", @"5", @"6"];
NSLog(@"b: %ld", array_a.hash);

心中有结果后,动手试试看。

接下来看看真实的结果。

a: 3
b: 3

是偶然吗?为什么会相同?

再来试试下一段代码。

NSArray *array_a = @[@"1", @"2", @"3", @"4"];
NSLog(@"a: %ld", array_a.hash);
NSArray *array_b = @[@"4", @"5", @"6", @"7", @"8"];
NSLog(@"b: %ld", array_a.hash);

发现什么规律了吗?

聪明的你一定发现了,hash == count

为什么呢?

来看看源码吧。

/**
 * Returns the same value as -count
 */
- (NSUInteger) hash
{
  return [self count];
}

相关文章

  • NSArray-不可靠的Hash

    Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换...

  • TableView的添加删除

    步骤 模型数据从NSArray->NSMutableArray 在故事板(Storyboard)中添加 增加按钮 ...

  • Golang标准库——hash

    hash hash包提供hash函数的接口。 type Hash Hash是一个被所有hash函数实现的公共接口。...

  • 疑虑

    我向一切确认 它们回答 爱情是不可靠的 生命是不可靠的 理想是不可靠的 我对一切有了疑虑 我也是不可靠的

  • 你真的了解HASH吗?

    什么是Hash?什么是Hash表?什么是Hash冲突? HASH   哈希(散列)是指:任意长度的输入经过hash...

  • Net-NTLM hash利用方法

    一、windows的hash NTLM hash NTLM hash是windows登录密码的一种hash,可以在...

  • nginx 负载均衡之url_hash,least_conn

    如图所示,url_hash根ip_hash的区别就在于计算hash值从 hash(ip)到了hash(url),但...

  • python中的hash()和id()的区别

    hash() hash(object) -> integer hash函数返回一个整数。两个值相同的对象的hash...

  • 哈希算法

    哈希算法 什么是hash函数?常见的hash算法hashlib的用法hash算法的用途 什么是hash函数? 哈希...

  • nginx学习第五天

    ngx_hash_t ngx_hash_t是nginx自己的hash表的实现。 ngx_hash_t的实现...

网友评论

    本文标题:NSArray-不可靠的Hash

    本文链接:https://www.haomeiwen.com/subject/pptlyhtx.html