たつをの ChangeLog : 2013-06-04

自分用メモ。
任意の文字列をハッシュ値に変換する。
ハッシュ関数のサンプルとして。

■コード(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]
この記事に言及しているこのブログ内の記事

Flickr にある過去の写真から、なぜか人気のある1枚。アップル純正のワイヤレスキーボード(Bluetooth)です。現在は iPad でのテキスト入力に活躍しています。

Apple Wireless Keyboard (JIS) MC184J/A

なぜこの写真が人気かというと、多分iPhoneスタンドとして洗濯バサミを使っているからでしょうねえ。最新ガジェットに生活感あふれる小道具という組み合わせはグッと来ますよね。

- iPhone とワイヤレスキーボードで快適テキスト入力生活[2010-06-23-1]
- iPhone スタンドのファイナルアンサーは「大きめの洗濯バサミ」[2010-05-27-2]

photo by

Canon デジタル一眼レフカメラ EOS Kiss X2


たつをの ChangeLog
Powered by chalow