[英]Is there a CPAN module that digests a short string into a short number?
我需要為一些短字符串創建唯一的數字id。
some.domain.com -> 32423421
another.domain.com -> 23332423
yet.another.com -> 12131232
是否有Perl CPAN模塊可以執行此類操作?
我嘗試過使用Digest :: MD5,但結果數字太長了:
some.domain.com -> 296800572457176150356613937260800159845
只需獲取MD5哈希的前8位數字即可。 這是有效的,因為MD5在其哈希地址空間上均勻分布 。 這意味着MD5散列數字的任何連續序列本身將是均勻分布的散列。
或者,只使用一些其他均勻分布的散列機制,返回8個數字。 無論什么對你來說最簡單。
Digest :: CRC或String :: CRC32 。 第一個提供了計算8位,16位和32位chcecksum的選項,而第二個僅支持32位。
鑒於字符串看起來像主機名,也許您只需將它們解析為ip,並將ip顯示為整數?
有一些像:
perl -le 'my $ip = gethostbyname("depesz.com"); my $num = unpack("N", $ip); print $num'
1311657670
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.