Skip to main content
CRC Calc

CRC-8 / LTE

Width8-bitRefInNoRefOutNo

Need custom parameters? Open in full calculator

Standard test string

Result

0xEA

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

0x000x9B0xAD0x360xC10x5A0x6C0xF70x190x820xB40x2F0xD80x430x750xEE
0x320xA90x9F0x040xF30x680x5E0xC50x2B0xB00x860x1D0xEA0x710x470xDC
0x640xFF0xC90x520xA50x3E0x080x930x7D0xE60xD00x4B0xBC0x270x110x8A
0x560xCD0xFB0x600x970x0C0x3A0xA10x4F0xD40xE20x790x8E0x150x230xB8
0xC80x530x650xFE0x090x920xA40x3F0xD10x4A0x7C0xE70x100x8B0xBD0x26
0xFA0x610x570xCC0x3B0xA00x960x0D0xE30x780x4E0xD50x220xB90x8F0x14
0xAC0x370x010x9A0x6D0xF60xC00x5B0xB50x2E0x180x830x740xEF0xD90x42
0x9E0x050x330xA80x5F0xC40xF20x690x870x1C0x2A0xB10x460xDD0xEB0x70
0x0B0x900xA60x3D0xCA0x510x670xFC0x120x890xBF0x240xD30x480x7E0xE5
0x390xA20x940x0F0xF80x630x550xCE0x200xBB0x8D0x160xE10x7A0x4C0xD7
0x6F0xF40xC20x590xAE0x350x030x980x760xED0xDB0x400xB70x2C0x1A0x81
0x5D0xC60xF00x6B0x9C0x070x310xAA0x440xDF0xE90x720x850x1E0x280xB3
0xC30x580x6E0xF50x020x990xAF0x340xDA0x410x770xEC0x1B0x800xB60x2D
0xF10x6A0x5C0xC70x300xAB0x9D0x060xE80x730x450xDE0x290xB20x840x1F
0xA70x3C0x0A0x910x660xFD0xCB0x500xBE0x250x130x880x7F0xE40xD20x49
0x950x0E0x380xA30x540xCF0xF90x620x8C0x170x210xBA0x4D0xD60xE00x7B

CRC Source Code

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

uint8_t calculate_crc(const uint8_t *data, size_t length) {
    uint8_t crc = 0x00;
    for (size_t i = 0; i < length; i++) {
        #if 0
        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/LTE

CRC-8/LTE is an 8-bit CRC model used in LTE mobile communication specifications.

CRC-8/LTE is a 8-bit CRC model defined by polynomial 0x9B, an initial register value of 0x00, and final XOR 0x00. It uses normal, non-reflected input and output processing.

Documented application context for this model includes LTE, Mobile networks, Wireless protocols. 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
0xEA
Residue
0x00

Model characteristics

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

Bit order
Normal
Register start
0x00
Final XOR
0x00
Published check
0xEA

Implementation checks for CRC-8/LTE

  • 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 0xEA.

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

Complete CRC-8/LTE parameters

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

Where CRC-8/LTE is used

  • 01LTE
  • 02Mobile networks
  • 03Wireless protocols

CRC-8/LTE FAQ

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

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

What polynomial does CRC-8/LTE use?

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

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

For CRC-8/LTE, RefIn is No and RefOut is No.

What is CRC-8/LTE commonly confused with?

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