代码之家  ›  专栏  ›  技术社区  ›  Zachary Scott

公式/模式提供唯一的32位int,表示512字符的文件路径?

  •  0
  • Zachary Scott  · 技术社区  · 15 年前

    是否有一个常见的公式可以为512个字符的文件路径提供唯一的值,假设每个字符有一个32位字节,并且可能限制名称中使用的字符?

    我知道,如果你只使用大写字母,组合将远远超过32位int,但如果在某个库中使用一个标识字段,这样一旦分配的数字 总是 相同的文件路径?这是一个想法,但是我正在寻找一些标准的公式,或者至少有人已经成功地在现实世界中实现了它。

    顺便说一句,我正在使用C,但是任何语言都可以作为例子,或者链接到一个网站。

    谢谢

    6 回复  |  直到 15 年前
        1
  •  2
  •   vgru    15 年前

    可以使用string.getHashCode()。当然,它不是唯一的,但两个相等的字符串将具有相同的哈希值。

    检查 this link 例如,使用getHashCode()时查找哈希冲突。

        2
  •  3
  •   Jon Seigel    15 年前

    文件路径的哈希代码是否足够唯一?

    MSDN: Object.GetHashCode()

        3
  •  1
  •   AlexEzh    15 年前

    即使每个字符使用1位,结果将是512位,超过32位,这意味着在某些情况下,两个不同的路径将生成相同的值。如果您的数据集是“全部512个字符的路径”,那么您真正能做的就是在特定的路径子集上寻找一个冲突概率很低的哈希函数。

        4
  •  0
  •   Rodrigo    15 年前

    如果你能用一个32位的数字来表示一个512字节的字符串,我只能说,这是一个多么好的压缩方法!

        5
  •  0
  •   Eli    15 年前

    我知道您说过int,但是如果您可以使用string,那么您可以使用md5,并将获得每个路径的唯一值。除此之外,我唯一能想到的就是为每一个数字指定一个递增的任意数字。不过,这不会给你一个真正的哈希值,只需创建一个路径ID…

        6
  •  0
  •   Powerlord    15 年前

    所以,换句话说,您正在寻找一个.NET CRC32实现,它将结果返回为uint32而不是8个字符的字符串?

    不幸的是,我看到的所有返回字节数组,包括 this one .