Skip to content

Instantly share code, notes, and snippets.

@hdf
Created September 4, 2014 22:46
Show Gist options
  • Save hdf/aef829629da9905e8e89 to your computer and use it in GitHub Desktop.
Save hdf/aef829629da9905e8e89 to your computer and use it in GitHub Desktop.
Add crc32 function to Strings.
// Bookmarklet:
//javascript:(function(){var genCRCTable=function(){var c;var r=[];for(var n=0;n<256;n++){c=n;for(var k=0;k<8;k++)c=((c&1)?(0xEDB88320^(c>>>1)):(c>>>1));r[n]=c;}return r;};if(!window.crcTable)window.crcTable=genCRCTable();String.prototype.crc32=function(s){s=s||this.toString();if(s.length<1)return"00000000";var t=window.crcTable||(window.crcTable=genCRCTable());var c=0^(-1);for(var i=0;i<s.length;i++)c=(c>>>8)^t[(c^s.charCodeAt(i))&0xFF];c=((c^(-1))>>>0).toString(16).toUpperCase();return(c.length%2>0)?c+"0":c;};}());
// Usage:
//"test".crc32();
var genCRCTable = function () {
var c;
var r = [];
for (var n = 0; n < 256; n++) {
c = n;
for (var k = 0; k < 8; k++)
c = ((c & 1) ? (0xEDB88320^(c >>> 1)) : (c >>> 1));
r[n] = c;
}
return r;
};
if (!window.crcTable) window.crcTable = genCRCTable();
String.prototype.crc32 = function (s) {
s = s || this.toString();
if (s.length < 1) return "00000000";
var t = window.crcTable || (window.crcTable = genCRCTable());
var c = 0^(-1);
for (var i = 0; i < s.length; i++)
c = (c >>> 8)^t[(c^s.charCodeAt(i)) & 0xFF];
c = ((c^(-1)) >>> 0).toString(16).toUpperCase();
return (c.length % 2 > 0) ? c + "0" : c;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment