mod.ts

CRC implementation with configurable polynomials.

Examples

One-shot helpers with default polynomials

import { assertEquals } from "@std/assert";
import { crc32, crc64 } from "@hertzg/crc";

assertEquals(crc32(new TextEncoder().encode("123456789")), 0xcbf43926);
assertEquals(crc64(new TextEncoder().encode("123456789")), 0x995dc9bbdf1939fan);

Factory with a custom polynomial (CRC32C / Castagnoli)

import { assertEquals } from "@std/assert";
import { createCrc32, CRC32C_POLYNOMIAL } from "@hertzg/crc";

const crc32c = createCrc32(CRC32C_POLYNOMIAL);

assertEquals(crc32c(new TextEncoder().encode("123456789")), 0xe3069283);

Functions

f
crc16(
data: Uint8Array,
polynomial?: number
): number

Calculates CRC16 checksum for the given data.

f
crc32(
data: Uint8Array,
polynomial?: number
): number

Calculates CRC32 checksum for the given data.

f
crc64(
data: Uint8Array,
polynomial?: bigint
): bigint

Calculates CRC64 checksum for the given data.

f
crc8(
data: Uint8Array,
polynomial?: number
): number

Calculates CRC8 checksum for the given data.

f
createCrc16(polynomial: number): (data: Uint8Array) => number

Creates a CRC16 function for the given polynomial.

f
createCrc32(polynomial: number): (data: Uint8Array) => number

Creates a CRC32 function for the given polynomial.

f
createCrc64(polynomial: bigint): (data: Uint8Array) => bigint

Creates a CRC64 function for the given polynomial.

f
createCrc8(polynomial: number): (data: Uint8Array) => number

Creates a CRC8 function for the given polynomial.

Variables

v
CRC16_CCITT_POLYNOMIAL: 33800

CRC16-CCITT polynomial (X.25, HDLC, Bluetooth).

v
CRC16_IBM_POLYNOMIAL: 40961

CRC16-IBM/ANSI polynomial (USB, Modbus).

v
CRC32_POLYNOMIAL: 3988292384

Standard CRC32 polynomial (ISO 3309, PNG, ZIP, gzip).

v
CRC32C_POLYNOMIAL: 2197175160

CRC32C polynomial (iSCSI, SCTP, ext4). Also known as Castagnoli.

v
CRC32K_POLYNOMIAL: 3945912366

CRC32K polynomial (Koopman). Designed for improved Hamming-distance coverage.

v
CRC64_ECMA_POLYNOMIAL: 14514072000185962306

CRC64-ECMA polynomial (XZ, 7z).

v
CRC64_ISO_POLYNOMIAL: 15564440312192434176

CRC64-ISO polynomial (ISO 3309).

v
CRC8_CCITT_POLYNOMIAL: 224

CRC8-CCITT polynomial (ATM HEC).

v
CRC8_MAXIM_POLYNOMIAL: 140

CRC8-Maxim/Dallas polynomial (1-Wire, iButton).

crc8.ts

CRC8 implementation with configurable polynomials.

Examples

Example 1

import { assertEquals } from "@std/assert";
import { createCrc8, CRC8_MAXIM_POLYNOMIAL } from "@hertzg/crc/crc8";

const crc8 = createCrc8(CRC8_MAXIM_POLYNOMIAL);

assertEquals(crc8(new TextEncoder().encode("123456789")), 0xa1);

Functions

f
crc8(
data: Uint8Array,
polynomial?: number
): number

Calculates CRC8 checksum for the given data.

f
createCrc8(polynomial: number): (data: Uint8Array) => number

Creates a CRC8 function for the given polynomial.

Variables

v
CRC8_CCITT_POLYNOMIAL: 224

CRC8-CCITT polynomial (ATM HEC).

v
CRC8_MAXIM_POLYNOMIAL: 140

CRC8-Maxim/Dallas polynomial (1-Wire, iButton).

crc16.ts

CRC16 implementation with configurable polynomials.

Examples

Example 1

import { assertEquals } from "@std/assert";
import { createCrc16, CRC16_CCITT_POLYNOMIAL } from "@hertzg/crc/crc16";

const crc16 = createCrc16(CRC16_CCITT_POLYNOMIAL);

assertEquals(crc16(new TextEncoder().encode("123456789")), 0x906e);

Functions

f
crc16(
data: Uint8Array,
polynomial?: number
): number

Calculates CRC16 checksum for the given data.

f
createCrc16(polynomial: number): (data: Uint8Array) => number

Creates a CRC16 function for the given polynomial.

Variables

v
CRC16_CCITT_POLYNOMIAL: 33800

CRC16-CCITT polynomial (X.25, HDLC, Bluetooth).

v
CRC16_IBM_POLYNOMIAL: 40961

CRC16-IBM/ANSI polynomial (USB, Modbus).

crc32.ts

CRC32 implementation with configurable polynomials.

Examples

Example 1

import { assertEquals } from "@std/assert";
import { createCrc32, CRC32_POLYNOMIAL } from "@hertzg/crc/crc32";

const crc32 = createCrc32(CRC32_POLYNOMIAL);

assertEquals(crc32(new TextEncoder().encode("123456789")), 0xcbf43926);

Functions

f
crc32(
data: Uint8Array,
polynomial?: number
): number

Calculates CRC32 checksum for the given data.

f
createCrc32(polynomial: number): (data: Uint8Array) => number

Creates a CRC32 function for the given polynomial.

Variables

v
CRC32_POLYNOMIAL: 3988292384

Standard CRC32 polynomial (ISO 3309, PNG, ZIP, gzip).

v
CRC32C_POLYNOMIAL: 2197175160

CRC32C polynomial (iSCSI, SCTP, ext4). Also known as Castagnoli.

v
CRC32K_POLYNOMIAL: 3945912366

CRC32K polynomial (Koopman). Designed for improved Hamming-distance coverage.

crc64.ts

CRC64 implementation with configurable polynomials.

Examples

Example 1

import { assertEquals } from "@std/assert";
import { createCrc64, CRC64_ECMA_POLYNOMIAL } from "@hertzg/crc/crc64";

const crc64 = createCrc64(CRC64_ECMA_POLYNOMIAL);

assertEquals(crc64(new TextEncoder().encode("123456789")), 0x995dc9bbdf1939fan);

Functions

f
crc64(
data: Uint8Array,
polynomial?: bigint
): bigint

Calculates CRC64 checksum for the given data.

f
createCrc64(polynomial: bigint): (data: Uint8Array) => bigint

Creates a CRC64 function for the given polynomial.

Variables

v
CRC64_ECMA_POLYNOMIAL: 14514072000185962306

CRC64-ECMA polynomial (XZ, 7z).

v
CRC64_ISO_POLYNOMIAL: 15564440312192434176

CRC64-ISO polynomial (ISO 3309).