crc-full
Description
The crc-full module is used to calculate any kind of CRC setting parameters such as length, polynomial and others. It's completely written in typescript for node js.
How to use
Use is very simple. Just add the module to project.
Install dependencies:
The only one dependency is typescript compilernpm install -g typescript
Import in node js
After typescript is installed, simple run:
npm install crc-full
Use in your project
First of all import the module in your project files, then create an instance of the class whith all parameters of the CRC algorithm you need. After the instance is create you can compute the CRC of your data passing an array of byte or simply a buffer object.
For typescript use:
...;crc.compute;
For javascript use:
const CRC = CRC;var crc = "CRC16" 16 0x8005 0x0000 0x0000 false false;crc;var computed_crc = crc
Where the parameters in the constructor are:
- Length: the Length of CRC in bit (8,16,32)
- Name: friendly name for the configuration
- Polinomial: the polinomial used to compute CRC
- InitialValue: initial value of CRC
- FinalXorValue: final value of CRC
- InputReflected: boolen that indicate if need to reflect input
- OutputReflected: boolen that indicate if need to reflect input
Presets
Invoking the static getter defaults is possible to use the internal preconfigurated CRC algorithms. An array of instantiated object is returned back
The algorithms are:
Length | Name | Polinomial | Initial value | Final value | Input reflected | Output reflected |
---|---|---|---|---|---|---|
8 | CRC8 | 0x07 | 0x00 | 0x00 | false | false) |
8 | CRC8_SAE_J1850 | 0x1D | 0xFF | 0xFF | false | false) |
8 | CRC8_SAE_J1850_ZERO | 0x1D | 0x00 | 0x00 | false | false) |
8 | CRC8_8H2F | 0x2F | 0xFF | 0xFF | false | false) |
8 | CRC8_CDMA2000 | 0x9B | 0xFF | 0x00 | false | false) |
8 | CRC8_DARC | 0x39 | 0x00 | 0x00 | true | true) |
8 | CRC8_DVB_S2 | 0xD5 | 0x00 | 0x00 | false | false) |
8 | CRC8_EBU | 0x1D | 0xFF | 0x00 | true | true) |
8 | CRC8_ICODE | 0x1D | 0xFD | 0x00 | false | false) |
8 | CRC8_ITU | 0x07 | 0x00 | 0x55 | false | false |
8 | CRC8_MAXIM | 0x31 | 0x00 | 0x00 | true | true |
8 | CRC8_ROHC | 0x07 | 0xFF | 0x00 | true | true |
8 | CRC8_WCDMA | 0x9B | 0x00 | 0x00 | true | true |
16 | CRC16_CCIT_ZERO | 0x1021 | 0x0000 | 0x0000 | false | false |
16 | CRC16_ARC | 0x8005 | 0x0000 | 0x0000 | true | true |
16 | CRC16_AUG_CCITT | 0x1021 | 0x1D0F | 0x0000 | false | false |
16 | CRC16_BUYPASS | 0x8005 | 0x0000 | 0x0000 | false | false |
16 | CRC16_CCITT_FALSE | 0x1021 | 0xFFFF | 0x0000 | false | false |
16 | CRC16_CDMA2000 | 0xC867 | 0xFFFF | 0x0000 | false | false |
16 | CRC16_DDS_110 | 0x8005 | 0x800D | 0x0000 | false | false |
16 | CRC16_DECT_R | 0x0589 | 0x0000 | 0x0001 | false | false |
16 | CRC16_DECT_X | 0x0589 | 0x0000 | 0x0000 | false | false |
16 | CRC16_DNP | 0x3D65 | 0x0000 | 0xFFFF | true | true |
16 | CRC16_EN_13757 | 0x3D65 | 0x0000 | 0xFFFF | false | false |
16 | CRC16_GENIBUS | 0x1021 | 0xFFFF | 0xFFFF | false | false |
16 | CRC16_MAXIM | 0x8005 | 0x0000 | 0xFFFF | true | true |
16 | CRC16_MCRF4XX | 0x1021 | 0xFFFF | 0x0000 | true | true |
16 | CRC16_RIELLO | 0x1021 | 0xB2AA | 0x0000 | true | true |
16 | CRC16_T10_DIF | 0x8BB7 | 0x0000 | 0x0000 | false | false |
16 | CRC16_TELEDISK | 0xA097 | 0x0000 | 0x0000 | false | false |
16 | CRC16_TMS37157 | 0x1021 | 0x89EC | 0x0000 | true | true |
16 | CRC16_USB | 0x8005 | 0xFFFF | 0xFFFF | true | true |
16 | CRC16_A | 0x1021 | 0xC6C6 | 0x0000 | true | true |
16 | CRC16_KERMIT | 0x1021 | 0x0000 | 0x0000 | true | true |
16 | CRC16_MODBUS | 0x8005 | 0xFFFF | 0x0000 | true | true |
16 | CRC16_X_25 | 0x1021 | 0xFFFF | 0xFFFF | true | true |
16 | CRC16_XMODEM | 0x1021 | 0x0000 | 0x0000 | false | false |
32 | CRC32 | 0x04C11DB7 | 0xFFFFFFFF | 0xFFFFFFFF | true | true |
32 | CRC32_BZIP2 | 0x04C11DB7 | 0xFFFFFFFF | 0xFFFFFFFF | false | false |
32 | CRC32_C | 0x1EDC6F41 | 0xFFFFFFFF | 0xFFFFFFFF | true | true |
32 | CRC32_D | 0xA833982B | 0xFFFFFFFF | 0xFFFFFFFF | true | true |
32 | CRC32_MPEG2 | 0x04C11DB7 | 0xFFFFFFFF | 0x00000000 | false | false |
32 | CRC32_POSIX | 0x04C11DB7 | 0x00000000 | 0xFFFFFFFF | false | false |
32 | CRC32_Q | 0x814141AB | 0x00000000 | 0x00000000 | false | false |
32 | CRC32_JAMCRC | 0x04C11DB7 | 0xFFFFFFFF | 0x00000000 | true | true |
32 | CRC32_XFER | 0x000000AF | 0x00000000 | 0x00000000 | false | false |
Is possible to use one of above CRC preset using the method default(name) where parameter name is the name of chosen preset.
Typescript users can use:
;
Typescript users can use:
;;
Advanced
The module also support advanced methods to calculate CRC tables and export them as byte arrays:
...crc;crc;var table = crctable;...
Notes
The method compute
take a byte array (or Buffer) as input and returns a number.
If you need to convert a string you have to pass it as a byte array.
If you need to read the CRC result in hex format string use .toString(16)