チェックサムの1つとして、扱いやすい4バイト値を生成するCRC32を計算します。普通の文字列も「文字列<=>UTF-8バイト配列の変換」でバイト配列に変換してからこの関数に与えます。
なお、FireFoxでは0x80000000以上の数値になるとdouble型として計算されてしまうので、">>>0"をつけて強制的に符号無し整数と認識させています。
【サンプル】
(function(array) {
var table = [];
var poly = 0xEDB88320;
var result = 0xFFFFFFFF;
//create table
for(var i = 0; i < 256; i++) {
var u = i;
for(var j = 0; j < 8; j++) {
if(u & 0x1) u = (u >>> 1) ^ poly;
else u >>>= 1;
}
table.push(u>>>0);
}
//calculate
for(var i = 0; i < array.length; i++)
result = ((result >>> 8) ^ table[array[i] ^ (result & 0xFF)])>>>0;
return (~result)>>>0;
})([1,2,3,4,5,6,7,8]);
【サンプルの実行】 → クリックしてください
JavaScriptコードスニペットへ