Base Crc

Android iOS JVM JS WasmJS macOS tvOS watchOS

This library calculates Cyclic Redundancy Checks (CRC) over ByteArrays.

Installing

This library is available on Maven Central. You can import Kaluga Base CRC as follows:

repositories {
    // ...
    mavenCentral()
}
// ...
dependencies {
    // ...
    implementation("com.splendo.kaluga.base:crc:$kalugaVersion")
}

Usage

Check out the full documentation

A CRC computes a checksum over a ByteArray using compute(data), returning the result as a ULong.

A large set of standard CRC variants is provided as ready-to-use objects, grouped by width (CRC3, CRC4, CRC5, CRC6, CRC7, CRC8, CRC16, CRC32, CRC64, …):

val checksum = CRC8.Bluetooth.compute(byteArrayOf(0x01, 0x02, 0x03))

Custom CRCs can be created by invoking CRC(...) directly, specifying the width, polynomial, init value, optional xorOut, and whether the input and/or output bits are reflected:

val crc = CRC(width = 16, polynomial = 0x1021u, init = 0xffffu)
val checksum = crc.compute(data)