gpt4 book ai didi

python - 寻找一种简单的校验和(或散列)算法,对最多 N 个字符的 ASCII 字符串无冲突

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:14:02 24 4
gpt4 key购买 nike

为了节省可执行文件的空间,我想计算 ASCII 字符串的校验和(或哈希值),然后使用校验和来查找相应的字符串。

这节省了空间,因为我不必用 ASCII 字符串填充可执行文件;相反,仅存储 32 位整数。

现在,为了让这个想法发挥作用,我需要一个校验和算法,该算法能够计算最多为 N 的字符串的唯一校验和。人物。因为,大部分字符串都是标识符,N=20可以接受。

有人知道满足我的标准的校验和算法吗?

理论:由于校验和算法映射 {0,1}^* -> {0,1}^m通常存在无数次碰撞。但是,这里我只考虑最多为 N 的字符串。字符,所以校验和(压缩)算法映射{0,1}^N -> {0,1}^m , 与 N<=m , 保证存在而不会发生碰撞(单射)。

最佳答案

如果您的哈希值是 32 位整数,那么您有 2^32 种可能的哈希码。一个 20 个字符的 ASCII 字符串至少有 7 x 20 = 140 位,如果您以字节为单位,则为 8 x 20 = 160 位。原始 ASCII 是 7 位代码,因此存在差异。

如果不复制一些哈希值,就无法将 140 位放入 32 位。

20 个 ASCII 字符串的唯一校验和至少需要 140 位,可能更像是 160 位。

关于python - 寻找一种简单的校验和(或散列)算法,对最多 N 个字符的 ASCII 字符串无冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43824092/

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