可逆折叠功能?

发布于 2025-01-19 01:21:05 字数 198 浏览 0 评论 0原文

我有一组可变大小的数字(生成为数字字符串),我想将它们存储在一个哈希表中,该哈希表的键和值都是无符号 32 位整数。当然,要散列的键和值可以更大(甚至大于 64 位),因此在插入它们之前,我需要进行某种折叠以减小它们的大小。但是,我不知道有任何可逆的方式来折叠密钥 - 我考虑过散列,但这通常是不可逆的。有哪些简单的函数可用于将长字符串转换为较短的字符串以及相反的方式以检索原始值?

I have a set of numbers (generated as numeric strings) of variable size and I would like to store them in a hash table having both as key and value unsigned 32-bits integer. Of course the keys and values to hash can be larger (even larger than 64 bits), so before inserting them I need to do some sort of folding to reduce their size. However, I am not aware of any reversible way to fold keys - I thought about hashing, but this is usually not reversible. What are easy functions to use to transform a long string into a shorter one and the opposite way around in order to retrieve the original value?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

叶落知秋 2025-01-26 01:21:05

不可能以可逆的方式将 64 位值映射到 32 位值。可能的 32 位值只有 4294967296 个,但表中可能有 4294967297 个不同的 64 位值。然后,其中两个必须相同(这称为 Pigeonhole 原理)并且当您反转它时,相同的值必须映射到两个不同的 64 位值。

It is not possible to map 64-bit values into 32-bit values in a reversible way. There are only 4294967296 possible 32-bit values, but you could have 4294967297 different 64-bit values in your table. Then, two of them would have to be the same (this is called the Pigeonhole Principle) and that same value would have to map to two different 64-bit values when you reversed it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文