crc32 that works with binary data and fancy character sets, outputs buffer, signed or unsigned data and has tests.
Derived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix
npm install buffer-crc32
var crc32 = require'buffer-crc32';// works with buffersvar buf = Buffer0x00 0x73 0x75 0x70 0x20 0x62 0x72 0x6f 0x00crc32buf // -> <Buffer 94 5a ab 4a>// has convenience methods for getting signed or unsigned intscrc32signedbuf // -> -1805997238crc32unsignedbuf // -> 2488970058// will cast to buffer if given a string, so you can// directly use foreign characters safelycrc32'自動販売機' // -> <Buffer cb 03 1a c5>// and works in append mode toovar partialCrc = crc32'hey';var partialCrc = crc32' ' partialCrc;var partialCrc = crc32'sup' partialCrc;var partialCrc = crc32' ' partialCrc;var finalCrc = crc32'bros' partialCrc; // -> <Buffer 47 fa 55 70>
This was tested against the output of zlib's crc32 method. You can run
the tests with
npm test (requires tap)
supports buffer inputs and return unsigned ints (thanks @tjholowaychuk).