是否有一个 CPAN 模块可以将短字符串消化为短数字?

发布于 2024-07-15 06:58:14 字数 321 浏览 10 评论 0原文

我需要为一些短字符串创建唯一的数字 ID。

some.domain.com    -> 32423421
another.domain.com -> 23332423
yet.another.com    -> 12131232

有 Perl CPAN 模块可以做这样的事情吗?

我尝试过使用 Digest::MD5 但结果数字太长:

some.domain.com    -> 296800572457176150356613937260800159845 

I need to create unique numerical ids for some short strings.

some.domain.com    -> 32423421
another.domain.com -> 23332423
yet.another.com    -> 12131232

Is there a Perl CPAN module that will do something like this?

I've tried using Digest::MD5 but the resulting numbers are too long:

some.domain.com    -> 296800572457176150356613937260800159845 

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

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

发布评论

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

评论(3

岁月染过的梦 2024-07-22 06:58:14

只需取 MD5 哈希值的前 8 位数字即可。 这是可行的,因为 MD5 在其哈希地址空间上均匀分布。 这意味着 MD5 哈希数字的任何连续序列本身都是均匀分布的哈希。

或者,只需使用其他返回 8 个数字的均匀分布哈希机制。 无论对你来说最简单的是什么。

Just take the first 8 digits of the MD5 hash. This works because MD5 is uniformly distributed over its hash address space. This means that any consecutive sequence of MD5 hash digits will itself be a uniformly distributed hash.

Alternatively, just use some other uniformly-distributed hashing mechanism that returns 8 numbers. Whatever's easiest for you.

狼性发作 2024-07-22 06:58:14

Digest::CRC 或 < a href="http://search.cpan.org/~soenke/String-CRC32-1.4/CRC32.pod" rel="nofollow noreferrer">String::CRC32。 第一个为您提供计算 8 位、16 位和 32 位校验和的选项,而第二个仅支持 32 位。

Either Digest::CRC or String::CRC32. The first gives you option to calculate 8-, 16- and 32-bit chcecksums, while second only supports 32-bit.

↙温凉少女 2024-07-22 06:58:14

鉴于字符串看起来像主机名,也许您只需将它们解析为 ip,并将 ip 显示为整数?

就像:

perl -le 'my $ip = gethostbyname("depesz.com"); my $num = unpack("N", $ip); print $num'
1311657670

Given the fact that the strings look like a host names, perhaps you will just resolve them to ip, and present the ip as integer?

Kind of like:

perl -le 'my $ip = gethostbyname("depesz.com"); my $num = unpack("N", $ip); print $num'
1311657670
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文