| bits | ||
| ctest | ||
| misc | ||
| perf | ||
| .flowconfig | ||
| .gitignore | ||
| .jscs.json | ||
| .jshintrc | ||
| .npmignore | ||
| .travis.yml | ||
| crc32.flow.js | ||
| crc32.js | ||
| LICENSE | ||
| Makefile | ||
| package.json | ||
| perf.txt | ||
| README.md | ||
| test.js | ||
crc32
Standard CRC-32 algorithm implementation in JS (for the browser and nodejs). Emphasis on correctness and performance.
Installation
With npm:
$ npm install crc-32
In the browser:
<script src="crc32.js"></script>
The script will manipulate module.exports if available (e.g. in a CommonJS
require context).  This is not always desirable.  To prevent the behavior,
define DO_NOT_EXPORT_CRC
Usage
In all cases, the relevant function takes a single argument representing data.
The return value is a signed 32-bit integer.
- 
CRC32.buf(byte array or buffer)assumes the argument is a set of 8-bit unsigned integers (e.g. nodejsBufferor simple array of ints).
- 
CRC32.bstr(binary string)interprets the argument as a binary string where thei-th byte is the low byte of the UCS-2 char:str.charCodeAt(i) & 0xFF
- 
CRC32.str(string)interprets the argument as a standard JS string
For example:
> // var CRC32 = require('crc-32'); // uncomment this line if in node
> CRC32.str("SheetJS")                          // -1647298270
> CRC32.bstr("SheetJS")                         // -1647298270
> CRC32.buf([ 83, 104, 101, 101, 116, 74, 83 ]) // -1647298270
> [CRC32.str("\u2603"),  CRC32.str("\u0003")]   // [ -1743909036,  1259060791 ]
> [CRC32.bstr("\u2603"), CRC32.bstr("\u0003")]  // [  1259060791,  1259060791 ]
> [CRC32.buf([0x2603]),  CRC32.buf([0x0003])]   // [  1259060791,  1259060791 ]
Testing
make test will run the node-based tests.
To run the in-browser tests, run a local server and go to the ctest directory.
To update the browser artifacts, run make ctest.
License
Please consult the attached LICENSE file for details. All rights not explicitly granted by the Apache 2.0 license are reserved by the Original Author.