Skip to main content
CRC Calc

CRC-8 / GSM-B

Width8-bitRefInNoRefOutNo

Need custom parameters? Open in full calculator

Standard test string

Result

0x94

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

0x000x490x920xDB0x6D0x240xFF0xB60xDA0x930x480x010xB70xFE0x250x6C
0xFD0xB40x6F0x260x900xD90x020x4B0x270x6E0xB50xFC0x4A0x030xD80x91
0xB30xFA0x210x680xDE0x970x4C0x050x690x200xFB0xB20x040x4D0x960xDF
0x4E0x070xDC0x950x230x6A0xB10xF80x940xDD0x060x4F0xF90xB00x6B0x22
0x2F0x660xBD0xF40x420x0B0xD00x990xF50xBC0x670x2E0x980xD10x0A0x43
0xD20x9B0x400x090xBF0xF60x2D0x640x080x410x9A0xD30x650x2C0xF70xBE
0x9C0xD50x0E0x470xF10xB80x630x2A0x460x0F0xD40x9D0x2B0x620xB90xF0
0x610x280xF30xBA0x0C0x450x9E0xD70xBB0xF20x290x600xD60x9F0x440x0D
0x5E0x170xCC0x850x330x7A0xA10xE80x840xCD0x160x5F0xE90xA00x7B0x32
0xA30xEA0x310x780xCE0x870x5C0x150x790x300xEB0xA20x140x5D0x860xCF
0xED0xA40x7F0x360x800xC90x120x5B0x370x7E0xA50xEC0x5A0x130xC80x81
0x100x590x820xCB0x7D0x340xEF0xA60xCA0x830x580x110xA70xEE0x350x7C
0x710x380xE30xAA0x1C0x550x8E0xC70xAB0xE20x390x700xC60x8F0x540x1D
0x8C0xC50x1E0x570xE10xA80x730x3A0x560x1F0xC40x8D0x3B0x720xA90xE0
0xC20x8B0x500x190xAF0xE60x3D0x740x180x510x8A0xC30x750x3C0xE70xAE
0x3F0x760xAD0xE40x520x1B0xC00x890xE50xAC0x770x3E0x880xC10x1A0x53

CRC Source Code

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

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

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 ^ 0xFF;
}

About CRC-8/GSM-B

CRC-8/GSM-B is a GSM-specific 8-bit CRC with a non-zero final XOR.

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

Documented application context for this model includes GSM, Mobile networks, Protocol validation. 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
0x94
Residue
0x53

Model characteristics

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

Bit order
Normal
Register start
0x00
Final XOR
0xFF
Published check
0x94

Implementation checks for CRC-8/GSM-B

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

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

Complete CRC-8/GSM-B parameters

CRC parameter guide
ParameterValueMeaningReference
Width8 bitsCRC register and result widthRead guide
Poly0x49Generator 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
XorOut0xFFFinal value XORed with the CRC registerRead guide
Check0x94CRC of ASCII “123456789”Read guide
Residue0x53Expected residue after appending a valid CRCRead guide
AliasesGSM CRC-8 B

Where CRC-8/GSM-B is used

  • 01GSM
  • 02Mobile networks
  • 03Protocol validation

CRC-8/GSM-B FAQ

What is the check value for CRC-8/GSM-B?

For the standard ASCII test input 123456789, the check value of CRC-8/GSM-B is 0x94.

What polynomial does CRC-8/GSM-B use?

CRC-8/GSM-B uses the 8-bit polynomial 0x49.

Does CRC-8/GSM-B use reflected input and output?

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

What is CRC-8/GSM-B commonly confused with?

The closest published model by parameter overlap is CRC-8/AUTOSAR, differing from CRC-8/GSM-B in polynomial and initial value.