IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    字符串的哈希算法hnv的介绍和实现

    admin发表于 2011-03-16 09:35:39
    love 0

    fnv全称”Fowler/Noll/Vo”,特点是快速而且冲突率比较低,在url hostname或者ip的哈希有广泛的应用, 详细信息请点击这里

    下面是fnv在Sheepdog中用法的实现,将任意字符串转化为uint64_t

      /*
       * 64 bit FNV-1a non-zero initial basis
       */
      #define FNV1A_64_INIT ((uint64_t) 0xcbf29ce484222325ULL)
     
      /*
       * 64 bit Fowler/Noll/Vo FNV-1a hash code
       */
     static inline uint64_t fnv_64a_buf(void *buf, size_t len, uint64_t hval)
     {
         unsigned char *bp = (unsigned char *) buf;
         unsigned char *be = bp + len;
         while (bp < be) {
             hval ^= (uint64_t) *bp++;
             hval += (hval << 1) + (hval << 4) + (hval << 5) +
                 (hval << 7) + (hval << 8) + (hval << 40);
         }
         return hval;
     }

    您可能对下面文章也感兴趣:

    • sheepdog源码分析之关键模块介绍(一)
    • sheepdog源码分析之关键数据结构介绍
    • sheepdog源码学习二之代码目录结构介绍
    • sheepdog源码学习笔记一
    • KVM分布式共享存储解决方案-sheepdog


沪ICP备19023445号-2号
友情链接