簡體   English   中英

是否有CPAN模塊將短字符串消化為短數字?

[英]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 :: CRCString :: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM