Skip to main content
CRC Calc

CRC-8 / DARC

Width8-bitRefInYesRefOutYes

Need custom parameters? Open in full calculator

Standard test string

Result

0x15

Similar CRC Algorithms

Result is calculated from the current input. Check is the published verification value for the standard input 123456789. Click another algorithm to view its detail page.

CRC Lookup Table

0x000x720xE40x960xF10x830x150x670xDB0xA90x3F0x4D0x2A0x580xCE0xBC
0x8F0xFD0x6B0x190x7E0x0C0x9A0xE80x540x260xB00xC20xA50xD70x410x33
0x270x550xC30xB10xD60xA40x320x400xFC0x8E0x180x6A0x0D0x7F0xE90x9B
0xA80xDA0x4C0x3E0x590x2B0xBD0xCF0x730x010x970xE50x820xF00x660x14
0x4E0x3C0xAA0xD80xBF0xCD0x5B0x290x950xE70x710x030x640x160x800xF2
0xC10xB30x250x570x300x420xD40xA60x1A0x680xFE0x8C0xEB0x990x0F0x7D
0x690x1B0x8D0xFF0x980xEA0x7C0x0E0xB20xC00x560x240x430x310xA70xD5
0xE60x940x020x700x170x650xF30x810x3D0x4F0xD90xAB0xCC0xBE0x280x5A
0x9C0xEE0x780x0A0x6D0x1F0x890xFB0x470x350xA30xD10xB60xC40x520x20
0x130x610xF70x850xE20x900x060x740xC80xBA0x2C0x5E0x390x4B0xDD0xAF
0xBB0xC90x5F0x2D0x4A0x380xAE0xDC0x600x120x840xF60x910xE30x750x07
0x340x460xD00xA20xC50xB70x210x530xEF0x9D0x0B0x790x1E0x6C0xFA0x88
0xD20xA00x360x440x230x510xC70xB50x090x7B0xED0x9F0xF80x8A0x1C0x6E
0x5D0x2F0xB90xCB0xAC0xDE0x480x3A0x860xF40x620x100x770x050x930xE1
0xF50x870x110x630x040x760xE00x920x2E0x5C0xCA0xB80xDF0xAD0x3B0x49
0x7A0x080x9E0xEC0x8B0xF90x6F0x1D0xA10xD30x450x370x500x220xB40xC6

CRC Source Code

/* 
 * Model: CRC-8 / DARC (8-bit)
 * Poly: 0x39, Init: 0x00, XorOut: 0x00
 * CRC Table C Source Code & Lookup Table Generator
 */
#include <stdint.h>
#include <stddef.h>

const uint8_t crc_table[256] = {
  0x00, 0x72, 0xE4, 0x96, 0xF1, 0x83, 0x15, 0x67, 
  0xDB, 0xA9, 0x3F, 0x4D, 0x2A, 0x58, 0xCE, 0xBC, 
  0x8F, 0xFD, 0x6B, 0x19, 0x7E, 0x0C, 0x9A, 0xE8, 
  0x54, 0x26, 0xB0, 0xC2, 0xA5, 0xD7, 0x41, 0x33, 
  0x27, 0x55, 0xC3, 0xB1, 0xD6, 0xA4, 0x32, 0x40, 
  0xFC, 0x8E, 0x18, 0x6A, 0x0D, 0x7F, 0xE9, 0x9B, 
  0xA8, 0xDA, 0x4C, 0x3E, 0x59, 0x2B, 0xBD, 0xCF, 
  0x73, 0x01, 0x97, 0xE5, 0x82, 0xF0, 0x66, 0x14, 
  0x4E, 0x3C, 0xAA, 0xD8, 0xBF, 0xCD, 0x5B, 0x29, 
  0x95, 0xE7, 0x71, 0x03, 0x64, 0x16, 0x80, 0xF2, 
  0xC1, 0xB3, 0x25, 0x57, 0x30, 0x42, 0xD4, 0xA6, 
  0x1A, 0x68, 0xFE, 0x8C, 0xEB, 0x99, 0x0F, 0x7D, 
  0x69, 0x1B, 0x8D, 0xFF, 0x98, 0xEA, 0x7C, 0x0E, 
  0xB2, 0xC0, 0x56, 0x24, 0x43, 0x31, 0xA7, 0xD5, 
  0xE6, 0x94, 0x02, 0x70, 0x17, 0x65, 0xF3, 0x81, 
  0x3D, 0x4F, 0xD9, 0xAB, 0xCC, 0xBE, 0x28, 0x5A, 
  0x9C, 0xEE, 0x78, 0x0A, 0x6D, 0x1F, 0x89, 0xFB, 
  0x47, 0x35, 0xA3, 0xD1, 0xB6, 0xC4, 0x52, 0x20, 
  0x13, 0x61, 0xF7, 0x85, 0xE2, 0x90, 0x06, 0x74, 
  0xC8, 0xBA, 0x2C, 0x5E, 0x39, 0x4B, 0xDD, 0xAF, 
  0xBB, 0xC9, 0x5F, 0x2D, 0x4A, 0x38, 0xAE, 0xDC, 
  0x60, 0x12, 0x84, 0xF6, 0x91, 0xE3, 0x75, 0x07, 
  0x34, 0x46, 0xD0, 0xA2, 0xC5, 0xB7, 0x21, 0x53, 
  0xEF, 0x9D, 0x0B, 0x79, 0x1E, 0x6C, 0xFA, 0x88, 
  0xD2, 0xA0, 0x36, 0x44, 0x23, 0x51, 0xC7, 0xB5, 
  0x09, 0x7B, 0xED, 0x9F, 0xF8, 0x8A, 0x1C, 0x6E, 
  0x5D, 0x2F, 0xB9, 0xCB, 0xAC, 0xDE, 0x48, 0x3A, 
  0x86, 0xF4, 0x62, 0x10, 0x77, 0x05, 0x93, 0xE1, 
  0xF5, 0x87, 0x11, 0x63, 0x04, 0x76, 0xE0, 0x92, 
  0x2E, 0x5C, 0xCA, 0xB8, 0xDF, 0xAD, 0x3B, 0x49, 
  0x7A, 0x08, 0x9E, 0xEC, 0x8B, 0xF9, 0x6F, 0x1D, 
  0xA1, 0xD3, 0x45, 0x37, 0x50, 0x22, 0xB4, 0xC6
};

uint8_t calculate_crc(const uint8_t *data, size_t length) {
    uint8_t crc = 0x00;
    for (size_t i = 0; i < length; i++) {
        #if 1
        uint8_t idx = (uint8_t)(crc ^ data[i]);
        crc = (crc >> 8) ^ crc_table[idx];
        #else
        uint8_t idx = (uint8_t)((crc >> 0) ^ data[i]);
        crc = (crc << 8) ^ crc_table[idx];
        #endif
    }
    return crc ^ 0x00;
}

About CRC-8/DARC

CRC-8/DARC is the reflected CRC used by the Data Radio Channel system.

CRC-8/DARC is a 8-bit CRC model defined by polynomial 0x39, an initial register value of 0x00, and final XOR 0x00. It processes reflected input bytes and reports a reflected output.

Documented application context for this model includes Data Radio Channel, Broadcast data, Radio systems. The calculator above applies this exact parameter set to the current input; the published Check value below is instead the fixed verification result for ASCII 123456789.

Standard test vector

CRC implementations are commonly verified with the ASCII input 123456789.

Input format
ASCII
Input
123456789
Expected CRC
0x15
Residue
0x00

Model characteristics

A model is identified by its complete parameter set, not its polynomial alone.

Bit order
Reflected
Register start
0x00
Final XOR
0x00
Published check
0x15

Implementation checks for CRC-8/DARC

  • Use a 8-bit register and polynomial 0x39.
  • Initialize the register to 0x00 and use XorOut 0x00 exactly as listed; changing either value defines a different model.
  • Verify the implementation with ASCII “123456789”; the expected result is 0x15.

Continue with the main calculator, browse the algorithm catalog, compare models in the Algorithm Reference section, or generate a lookup table.

Complete CRC-8/DARC parameters

CRC parameter guide
ParameterValueMeaningReference
Width8 bitsCRC register and result widthRead guide
Poly0x39Generator polynomial without the leading termRead guide
Init0x00Initial CRC register valueRead guide
RefInYesReflect each input byte before processingRead guide
RefOutYesReflect the register before XOR OutRead guide
XorOut0x00Final value XORed with the CRC registerRead guide
Check0x15CRC of ASCII “123456789”Read guide
Residue0x00Expected residue after appending a valid CRCRead guide
AliasesDARC CRC-8

Where CRC-8/DARC is used

  • 01Data Radio Channel
  • 02Broadcast data
  • 03Radio systems

CRC-8/DARC FAQ

What is the check value for CRC-8/DARC?

For the standard ASCII test input 123456789, the check value of CRC-8/DARC is 0x15.

What polynomial does CRC-8/DARC use?

CRC-8/DARC uses the 8-bit polynomial 0x39.

Does CRC-8/DARC use reflected input and output?

For CRC-8/DARC, RefIn is Yes and RefOut is Yes.

What is CRC-8/DARC commonly confused with?

The closest published model by parameter overlap is CRC-8/BLUETOOTH, differing from CRC-8/DARC in polynomial.