8,16,32,64 bit crc algorithms as defined by the AUTOSAR standard
npm install autosar-crcA C++ implemented set of 8,16,32,64 bit cyclic redundancy check (CRC) functions conforming to the CRC spec given by AUTOSAR. Written in C++ and compiled as a 'C++ addon' for use in JavaScript. Available on NPM.
These instructions will get you up and running using the autosar-crc node module on your local machine.
To get going you need the following installed:
* NodeJS
* npm
* c++17 compiler
Autosar-crc is available on the npm registry, so within your console you can install autosar-crc.
```
npm install autosar-crc
Autosar-crc provides the following:
`js example.js
const autocrc = require('autosar-crc');
console.log(autocrc.crc8('123456789'));
console.log(autocrc.crc8_h2f('123456789'));
console.log(autocrc.crc16('123456789'));
console.log(autocrc.crc32('123456789'));
console.log(autocrc.crc32_p4('123456789'));
console.log(autocrc.crc64('123456789'));
```
node example.js
You should get the following result:
``
75
223
10673
3421780262
379048042
11051210869376104000
The polynomials of the CRC match the spec given in the AUTOSAR standard, see crc_tables.h for specifics on the polynomials.
Each CRC accepts the following types:
* StringTypedArray
* ArrayBuffer
*
`js
const autocrc = require('autosar-crc');
const arr = new Uint8Array([0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39]);
console.log(autocrc.crc8(arr));
console.log(autocrc.crc8(arr.buffer));
console.log(autocrc.crc8('123456789'))
`
Should give you the following result (note: 0x31 is hex for 1):
``
75
75
75
Running crc32 over the entire works of Shakespeare 100x on a MacBook Air gives the following:
``
autosar-crc: 2.442s
crc: 3.293s
crc32: 56.973s
The tests are found in the main.test.js file and are run with Jest.
The test script is defined in package.json so you can run:
```
npm test
* Node Addon API - Module to use the Node-API from C++
* Jest - Testing framework
Richard Haar - Initial work* - richhaar
This project is licensed under the ISC License - see the LICENSE file for details
* Bastian Molkenthin for the table generation here