Skip to main content
CRC Calc

CRC-8 / WCDMA

Width8-bitRefInYesRefOutYes

Need custom parameters? Open in full calculator

Standard test string

Result

0x25

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

0x000xD00x130xC30x260xF60x350xE50x4C0x9C0x5F0x8F0x6A0xBA0x790xA9
0x980x480x8B0x5B0xBE0x6E0xAD0x7D0xD40x040xC70x170xF20x220xE10x31
0x830x530x900x400xA50x750xB60x660xCF0x1F0xDC0x0C0xE90x390xFA0x2A
0x1B0xCB0x080xD80x3D0xED0x2E0xFE0x570x870x440x940x710xA10x620xB2
0xB50x650xA60x760x930x430x800x500xF90x290xEA0x3A0xDF0x0F0xCC0x1C
0x2D0xFD0x3E0xEE0x0B0xDB0x180xC80x610xB10x720xA20x470x970x540x84
0x360xE60x250xF50x100xC00x030xD30x7A0xAA0x690xB90x5C0x8C0x4F0x9F
0xAE0x7E0xBD0x6D0x880x580x9B0x4B0xE20x320xF10x210xC40x140xD70x07
0xD90x090xCA0x1A0xFF0x2F0xEC0x3C0x950x450x860x560xB30x630xA00x70
0x410x910x520x820x670xB70x740xA40x0D0xDD0x1E0xCE0x2B0xFB0x380xE8
0x5A0x8A0x490x990x7C0xAC0x6F0xBF0x160xC60x050xD50x300xE00x230xF3
0xC20x120xD10x010xE40x340xF70x270x8E0x5E0x9D0x4D0xA80x780xBB0x6B
0x6C0xBC0x7F0xAF0x4A0x9A0x590x890x200xF00x330xE30x060xD60x150xC5
0xF40x240xE70x370xD20x020xC10x110xB80x680xAB0x7B0x9E0x4E0x8D0x5D
0xEF0x3F0xFC0x2C0xC90x190xDA0x0A0xA30x730xB00x600x850x550x960x46
0x770xA70x640xB40x510x810x420x920x3B0xEB0x280xF80x1D0xCD0x0E0xDE

CRC Source Code

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

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/WCDMA

CRC-8/WCDMA is a reflected 8-bit CRC used in WCDMA communication systems.

CRC-8/WCDMA is a 8-bit CRC model defined by polynomial 0x9B, 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 WCDMA, Mobile networks, Telecommunications. 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
0x25
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
0x25

Implementation checks for CRC-8/WCDMA

  • Use a 8-bit register and polynomial 0x9B.
  • 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 0x25.

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

Complete CRC-8/WCDMA parameters

CRC parameter guide
ParameterValueMeaningReference
Width8 bitsCRC register and result widthRead guide
Poly0x9BGenerator 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
Check0x25CRC of ASCII “123456789”Read guide
Residue0x00Expected residue after appending a valid CRCRead guide
AliasesWCDMA CRC-8

Where CRC-8/WCDMA is used

  • 01WCDMA
  • 02Mobile networks
  • 03Telecommunications

CRC-8/WCDMA FAQ

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

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

What polynomial does CRC-8/WCDMA use?

CRC-8/WCDMA uses the 8-bit polynomial 0x9B.

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

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

What is CRC-8/WCDMA commonly confused with?

CRC-8/LTE uses the same polynomial (0x9B), which is the usual source of mix-ups — matching the polynomial alone does not reproduce CRC-8/WCDMA. The two models differ in input reflection and output reflection, so a port from one to the other needs those fields checked explicitly, not just the poly.