サイトマップ

JavaScriptコードスニペット:バイト配列のCRC32値を計算する

チェックサムの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コードスニペット

 
research/1308663380.txt · 最終更新: 2011/07/08 18:04 by Kazuyuki Matsuda
特に明示されていない限り、本サイトの内容は次のライセンスに従います:Copyright(C) 2011 Shorindo, Inc. All Rights Reserved
Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki