GUIDES Binary Data Calculate CRC for Binary Data
About
Binary Data
DNS
DNS Service Discovery
EventSource
Files
HTTP
Implementing ECMA-419 Modules
Key-Value Storage
Logging
MQTT
Optimizing Embedded JavaScript
Streams
Time
Time Callbacks
Transport Layer Security (TLS)
WebSocket
Wi-Fi
Overview
Convert String to ArrayBuffer
Convert ArrayBuffer to String
Convert ArrayBuffers to String
Handle Errors Converting ArrayBuffer to String
Immutable ArrayBuffers
Resize an ArrayBuffer
Combine ArrayBuffers
Convert Base64 to Binary Data
Convert Binary Data to Base64
Convert Binary Data to Hex
Convert Hex to Binary Data
Calculate CRC for Binary Data
Compress Binary Data – One Buffer
Compress Binary Data – Streaming
Decompress Binary Data – One Buffer
Decompress Binary Data – Streaming
About
Binary Data
Overview
Convert String to ArrayBuffer
Convert ArrayBuffer to String
Convert ArrayBuffers to String
Handle Errors Converting ArrayBuffer to String
Immutable ArrayBuffers
Resize an ArrayBuffer
Combine ArrayBuffers
Convert Base64 to Binary Data
Convert Binary Data to Base64
Convert Binary Data to Hex
Convert Hex to Binary Data
Calculate CRC for Binary Data
Compress Binary Data – One Buffer
Compress Binary Data – Streaming
Decompress Binary Data – One Buffer
Decompress Binary Data – Streaming
DNS
Overview
Resolve Name
Resolve Multiple Names
DNS Service Discovery
Overview
Claim Local Name
Advertise Services
Discover Services
EventSource
Overview
Connect
Connect Securely
Close
Receive
Connection Information
Files
Overview
Create, Open, and Close File
Read File
Write File
Delete File
Get File Information
Create Directory
Enumerate Directory
Delete Directory
Open Directory
HTTP
Overview
Make Request using fetch()
Make Secure Request using fetch()
Send Request Headers using fetch()
Receive Response Headers using fetch()
Send Request Body using fetch()
Make Request using HTTP Client
Make Secure Request using HTTP Client
Send Request Headers using HTTP Client
Receive Response Headers using HTTP Client
Send Request Body using HTTP Client
Implementing ECMA-419 Modules
Overview
Constructor Sets `target`
Constructor IO
Constructor Clean-up on Failure
`close()` and `[Symbol.dispose]`
Calling Callbacks
Setting Options with `configure()`
Keep Instance Surface Clean
Key-Value Storage
Overview
Read and Write Values using Web Storage
Delete Keys using Web Storage
Enumerate Keys using Web Storage
Read and Write Values using Key-Value Pair
Change Data Formats using Key-Value Pair
Delete Keys using Key-Value Pair
Enumerate Keys using Key-Value Pair
Logging
Overview
Logging with Console
Logging with trace()
MQTT
Overview
Connect to MQTT Server using MQTT()
Connect Securely to MQTT Server using MQTT()
Close Connection using MQTT()
Publish Message using MQTT()
Subscribe to Topic using MQTT()
Receive Messages using MQTT()
Get Connection Information using MQTT()
Connect to MQTT Server using MQTT Client
Connect Securely to MQTT Server using MQTT Client
Close Connection using MQTT Client
Publish Message using MQTT Client
Subscribe to Topic using MQTT Client
Receive Messages using MQTT Client
Optimizing Embedded JavaScript
Overview
When to Optimize
Know Where to Optimize
Loop through an Array
Iterate Over a String
Build a String
Avoid Copying Buffers
Accessing Properties
Map versus Object
Append to an Array
Operate on Bits
Define Class Methods
Streams
Overview
Time
Overview
Get Unix Time
Get Time of Day
Get Date
Get Time Since System Start
Get Microseconds
Set System Date and Time
Get Time and Date from Real-Time Clock
Set Real-Time Clock Time
Get Time and Date from Network
Sleep
Time Callbacks
Overview
One-Time Callback
Repeating Callback
Repeating Callback with Initial Delay
Immediate Callback
Reschedule Callback
Cancel Callback
Suspend Callback
Transport Layer Security (TLS)
Overview
Include Public Certificates
Include Private Certificates
Diagnostics
DER and PEM Certificates
WebSocket
Overview
Connect to Server using WebSocket()
Connect Securely to Server using WebSocket()
Close Connection using WebSocket()
Send Message using WebSocket()
Receive Message using WebSocket()
Get Connection Information using WebSocket()
Connect to Server using WebSocket Client
Connect Securely to Server using WebSocket Client
Close Connection using WebSocket Client
Send Message using WebSocket Client
Receive Message using WebSocket Client
Control Messages using WebSocket Client
Connect to Server using WebSocketStream
Connect Securely to Server using WebSocketStream
Close Connection using WebSocketStream
Send Message using WebSocketStream
Receive Message using WebSocketStream
Wi-Fi
Overview
Scan for Access Points
Scan Continuously for Access Points
Connect
Reconnect Automatically
Disconnect
Get Connection Information
Use Static IP Address

Calculate CRC for Binary Data

The CRC module calculates the Cyclic Redundancy Check (CRC) for buffers of binary data.

Check the table below to find the constructor and parameters to use for the CRC you need to calculate. To calculate the CRC for a buffer using CRC-16/MODBUS, use the CRC16 constructor.

const crc = new CRC16(0x8005, 0xFFFF, true, true, 0x0000);

const data = Uint8Array.of(0, 1, 2, 3, 4, 5, 6, 7);

const crcValue = crc.checksum(data);
// => crcValue is checksum value

crc.close();

The CRC may be calculated across multiple buffers.

const crc = new CRC16(0x8005, 0xFFFF, true, true, 0x0000);

const data1 = Uint8Array.of(0, 1, 2, 3, 4, 5, 6, 7);
const data2 = Uint8Array.of(7, 6, 5, 4, 3, 2, 1, 0);

crc.checksum(data1);
const crcValue = crc.checksum(data2);
// => crcValue is CRC of data1 and data2

crc.close();

A single CRC instance can calculate multiple checksums. Call reset() to reinitialize the internal state.

const crc = new CRC16(0x8005, 0xFFFF, true, true, 0x0000);

const data1 = Uint8Array.of(0, 1, 2, 3, 4, 5, 6, 7);
const data2 = Uint8Array.of(7, 6, 5, 4, 3, 2, 1, 0);

const crcValue1 = crc.checksum(data1);
// => crcValue1 is CRC of data1

crc.reset();

const crcValue2 = crc.checksum(data2);
// => crcValue2 is CRC of data2


crc.close();
Name Constructor
CRC-8 new CRC8(0x07, 0x00, false, false, 0x00)
CRC-8/CDMA2000 new CRC8(0x9B, 0xFF, false, false, 0x00)
CRC-8/DARC new CRC8(0x39, 0x00, true, true, 0x00)
CRC-8/DVB-S2 new CRC8(0xD5, 0x00, false, false, 0x00)
CRC-8/EBU new CRC8(0x1D, 0xFF, true, true, 0x00)
CRC-8/I-CODE new CRC8(0x1D, 0xFD, false, false, 0x00)
CRC-8/ITU new CRC8(0x07, 0x00, false, false, 0x55)
CRC-8/MAXIM new CRC8(0x31, 0x00, true, true, 0x00)
CRC-8/ROHC new CRC8(0x07, 0xFF, true, true, 0x00)
CRC-8/WCDMA new CRC8(0x9B, 0x00, true, true, 0x00)
CRC-16/CCITT-FALSE new CRC16(0x1021, 0xFFFF, false, false, 0x0000)
CRC-16/ARC new CRC16(0x8005, 0x0000, true, true, 0x0000)
CRC-16/ARG-CCITT new CRC16(0x1021, 0x1D0F, false, false, 0x0000)
CRC-16/BUYPASS new CRC16(0x8005, 0x0000, false, false, 0x0000)
CRC-16/CDMA2000 new CRC16(0xC867, 0xFFFF, false, false, 0x0000)
CRC-16/DDS-110 new CRC16(0x8005, 0x800D, false, false, 0x0000)
CRC-16/DECT-R new CRC16(0x0589, 0x0000, false, false, 0x0001)
CRC-16/DECT-X new CRC16(0x0589, 0x0000, false, false, 0x0000)
CRC-16/DNP new CRC16(0x3D65, 0x0000, true, true, 0xFFFF)
CRC-16/EN-13757 new CRC16(0x3D65, 0x0000, false, false, 0xFFFF)
CRC-16/GENIBUS new CRC16(0x1021, 0xFFFF, false, false, 0xFFFF)
CRC-16/MAXIM new CRC16(0x8005, 0x0000, true, true, 0xFFFF)
CRC-16/MCRF4XX new CRC16(0x1021, 0xFFFF, true, true, 0x0000)
CRC-16/RIELLO new CRC16(0x1021, 0xB2AA, true, true, 0x0000)
CRC-16/T10-DIF new CRC16(0x8BB7, 0x0000, false, false, 0x0000)
CRC-16/TELEDISK new CRC16(0xA097, 0x0000, false, false, 0x0000)
CRC-16/TMS37157 new CRC16(0x1021, 0x89EC, true, true, 0x0000)
CRC-16/USB new CRC16(0x8005, 0xFFFF, true, true, 0xFFFF)
CRC-A new CRC16(0x1021, 0xC6C6, true, true, 0x0000)
CRC-16/KERMIT new CRC16(0x1021, 0x0000, true, true, 0x0000)
CRC-16/MODBUS new CRC16(0x8005, 0xFFFF, true, true, 0x0000)
CRC-16/X-25 new CRC16(0x1021, 0xFFFF, true, true, 0xFFFF)
CRC-16/XMODEM new CRC16(0x1021, 0x0000, false, false, 0x0000)