【Perl】文字列をハッシュ関数でハッシュ値に変換
2013-06-04-1
[Algorithm][Programming]
自分用メモ。
任意の文字列をハッシュ値に変換する。
ハッシュ関数のサンプルとして。
■コード(hash-function.pl):
■実行結果:
ハッシュ値は32ビット。
ハッシュサイズは32ビットで表せる整数に近い素数[2006-08-15-2]。
任意の文字列をハッシュ値に変換する。
ハッシュ関数のサンプルとして。
■コード(hash-function.pl):
#!/usr/bin/perl use strict; use warnings; use Encode; use utf8; binmode STDOUT, ":utf8"; my $t = "これは This is ペン a pen デスね。東京タワーに行きましたYO"; my $hv = str2hv($t); print "$t\n"; printf "%08X\n", $hv; sub str2hv { my ($t) = @_; $t = Encode::encode_utf8($t) if utf8::is_utf8($t); my $hv = 0; my $hash_size = 4294967291; foreach my $c (split(//, $t)) { my $n = unpack("C", $c); $hv = ($hv * 256 + $n) % $hash_size; } return $hv; }
■実行結果:
% ./hash-function.pl これは This is ペン a pen デスね。東京タワーに行きましたYO 4C2F3B05
ハッシュ値は32ビット。
ハッシュサイズは32ビットで表せる整数に近い素数[2006-08-15-2]。