Skip to main content
CRC Calc

CRC-16 / TELEDISK

Width16-bitRefInNoRefOutNo

Need custom parameters? Open in full calculator

Standard test string

Result

0x0FB3

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

0x00000xA0970xE1B90x412E0x63E50xC3720x825C0x22CB0xC7CA0x675D0x26730x86E40xA42F0x04B80x45960xE501
0x2F030x8F940xCEBA0x6E2D0x4CE60xEC710xAD5F0x0DC80xE8C90x485E0x09700xA9E70x8B2C0x2BBB0x6A950xCA02
0x5E060xFE910xBFBF0x1F280x3DE30x9D740xDC5A0x7CCD0x99CC0x395B0x78750xD8E20xFA290x5ABE0x1B900xBB07
0x71050xD1920x90BC0x302B0x12E00xB2770xF3590x53CE0xB6CF0x16580x57760xF7E10xD52A0x75BD0x34930x9404
0xBC0C0x1C9B0x5DB50xFD220xDFE90x7F7E0x3E500x9EC70x7BC60xDB510x9A7F0x3AE80x18230xB8B40xF99A0x590D
0x930F0x33980x72B60xD2210xF0EA0x507D0x11530xB1C40x54C50xF4520xB57C0x15EB0x37200x97B70xD6990x760E
0xE20A0x429D0x03B30xA3240x81EF0x21780x60560xC0C10x25C00x85570xC4790x64EE0x46250xE6B20xA79C0x070B
0xCD090x6D9E0x2CB00x8C270xAEEC0x0E7B0x4F550xEFC20x0AC30xAA540xEB7A0x4BED0x69260xC9B10x889F0x2808
0xD88F0x78180x39360x99A10xBB6A0x1BFD0x5AD30xFA440x1F450xBFD20xFEFC0x5E6B0x7CA00xDC370x9D190x3D8E
0xF78C0x571B0x16350xB6A20x94690x34FE0x75D00xD5470x30460x90D10xD1FF0x71680x53A30xF3340xB21A0x128D
0x86890x261E0x67300xC7A70xE56C0x45FB0x04D50xA4420x41430xE1D40xA0FA0x006D0x22A60x82310xC31F0x6388
0xA98A0x091D0x48330xE8A40xCA6F0x6AF80x2BD60x8B410x6E400xCED70x8FF90x2F6E0x0DA50xAD320xEC1C0x4C8B
0x64830xC4140x853A0x25AD0x07660xA7F10xE6DF0x46480xA3490x03DE0x42F00xE2670xC0AC0x603B0x21150x8182
0x4B800xEB170xAA390x0AAE0x28650x88F20xC9DC0x694B0x8C4A0x2CDD0x6DF30xCD640xEFAF0x4F380x0E160xAE81
0x3A850x9A120xDB3C0x7BAB0x59600xF9F70xB8D90x184E0xFD4F0x5DD80x1CF60xBC610x9EAA0x3E3D0x7F130xDF84
0x15860xB5110xF43F0x54A80x76630xD6F40x97DA0x374D0xD24C0x72DB0x33F50x93620xB1A90x113E0x50100xF087

CRC Source Code

/* 
 * Model: CRC-16 / TELEDISK (16-bit)
 * Poly: 0xA097, Init: 0x0000, XorOut: 0x0000
 * CRC Table C Source Code & Lookup Table Generator
 */
#include <stdint.h>
#include <stddef.h>

const uint16_t crc_table[256] = {
  0x0000, 0xA097, 0xE1B9, 0x412E, 0x63E5, 0xC372, 0x825C, 0x22CB, 
  0xC7CA, 0x675D, 0x2673, 0x86E4, 0xA42F, 0x04B8, 0x4596, 0xE501, 
  0x2F03, 0x8F94, 0xCEBA, 0x6E2D, 0x4CE6, 0xEC71, 0xAD5F, 0x0DC8, 
  0xE8C9, 0x485E, 0x0970, 0xA9E7, 0x8B2C, 0x2BBB, 0x6A95, 0xCA02, 
  0x5E06, 0xFE91, 0xBFBF, 0x1F28, 0x3DE3, 0x9D74, 0xDC5A, 0x7CCD, 
  0x99CC, 0x395B, 0x7875, 0xD8E2, 0xFA29, 0x5ABE, 0x1B90, 0xBB07, 
  0x7105, 0xD192, 0x90BC, 0x302B, 0x12E0, 0xB277, 0xF359, 0x53CE, 
  0xB6CF, 0x1658, 0x5776, 0xF7E1, 0xD52A, 0x75BD, 0x3493, 0x9404, 
  0xBC0C, 0x1C9B, 0x5DB5, 0xFD22, 0xDFE9, 0x7F7E, 0x3E50, 0x9EC7, 
  0x7BC6, 0xDB51, 0x9A7F, 0x3AE8, 0x1823, 0xB8B4, 0xF99A, 0x590D, 
  0x930F, 0x3398, 0x72B6, 0xD221, 0xF0EA, 0x507D, 0x1153, 0xB1C4, 
  0x54C5, 0xF452, 0xB57C, 0x15EB, 0x3720, 0x97B7, 0xD699, 0x760E, 
  0xE20A, 0x429D, 0x03B3, 0xA324, 0x81EF, 0x2178, 0x6056, 0xC0C1, 
  0x25C0, 0x8557, 0xC479, 0x64EE, 0x4625, 0xE6B2, 0xA79C, 0x070B, 
  0xCD09, 0x6D9E, 0x2CB0, 0x8C27, 0xAEEC, 0x0E7B, 0x4F55, 0xEFC2, 
  0x0AC3, 0xAA54, 0xEB7A, 0x4BED, 0x6926, 0xC9B1, 0x889F, 0x2808, 
  0xD88F, 0x7818, 0x3936, 0x99A1, 0xBB6A, 0x1BFD, 0x5AD3, 0xFA44, 
  0x1F45, 0xBFD2, 0xFEFC, 0x5E6B, 0x7CA0, 0xDC37, 0x9D19, 0x3D8E, 
  0xF78C, 0x571B, 0x1635, 0xB6A2, 0x9469, 0x34FE, 0x75D0, 0xD547, 
  0x3046, 0x90D1, 0xD1FF, 0x7168, 0x53A3, 0xF334, 0xB21A, 0x128D, 
  0x8689, 0x261E, 0x6730, 0xC7A7, 0xE56C, 0x45FB, 0x04D5, 0xA442, 
  0x4143, 0xE1D4, 0xA0FA, 0x006D, 0x22A6, 0x8231, 0xC31F, 0x6388, 
  0xA98A, 0x091D, 0x4833, 0xE8A4, 0xCA6F, 0x6AF8, 0x2BD6, 0x8B41, 
  0x6E40, 0xCED7, 0x8FF9, 0x2F6E, 0x0DA5, 0xAD32, 0xEC1C, 0x4C8B, 
  0x6483, 0xC414, 0x853A, 0x25AD, 0x0766, 0xA7F1, 0xE6DF, 0x4648, 
  0xA349, 0x03DE, 0x42F0, 0xE267, 0xC0AC, 0x603B, 0x2115, 0x8182, 
  0x4B80, 0xEB17, 0xAA39, 0x0AAE, 0x2865, 0x88F2, 0xC9DC, 0x694B, 
  0x8C4A, 0x2CDD, 0x6DF3, 0xCD64, 0xEFAF, 0x4F38, 0x0E16, 0xAE81, 
  0x3A85, 0x9A12, 0xDB3C, 0x7BAB, 0x5960, 0xF9F7, 0xB8D9, 0x184E, 
  0xFD4F, 0x5DD8, 0x1CF6, 0xBC61, 0x9EAA, 0x3E3D, 0x7F13, 0xDF84, 
  0x1586, 0xB511, 0xF43F, 0x54A8, 0x7663, 0xD6F4, 0x97DA, 0x374D, 
  0xD24C, 0x72DB, 0x33F5, 0x9362, 0xB1A9, 0x113E, 0x5010, 0xF087
};

uint16_t calculate_crc(const uint8_t *data, size_t length) {
    uint16_t crc = 0x0000;
    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 >> 8) ^ data[i]);
        crc = (crc << 8) ^ crc_table[idx];
        #endif
    }
    return crc ^ 0x0000;
}

About CRC-16/TELEDISK

CRC-16/TELEDISK is associated with the Teledisk disk-image format.

CRC-16/TELEDISK is a 16-bit CRC model defined by polynomial 0xA097, an initial register value of 0x0000, and final XOR 0x0000. It uses normal, non-reflected input and output processing.

Documented application context for this model includes Disk images, Teledisk, Legacy storage. 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
0x0FB3
Residue
0x0000

Model characteristics

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

Bit order
Normal
Register start
0x0000
Final XOR
0x0000
Published check
0x0FB3

Implementation checks for CRC-16/TELEDISK

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

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

Complete CRC-16/TELEDISK parameters

CRC parameter guide
ParameterValueMeaningReference
Width16 bitsCRC register and result widthRead guide
Poly0xA097Generator polynomial without the leading termRead guide
Init0x0000Initial CRC register valueRead guide
RefInNoReflect each input byte before processingRead guide
RefOutNoReflect the register before XOR OutRead guide
XorOut0x0000Final value XORed with the CRC registerRead guide
Check0x0FB3CRC of ASCII “123456789”Read guide
Residue0x0000Expected residue after appending a valid CRCRead guide
AliasesTeledisk CRC

Where CRC-16/TELEDISK is used

  • 01Disk images
  • 02Teledisk
  • 03Legacy storage

CRC-16/TELEDISK FAQ

What is the check value for CRC-16/TELEDISK?

For the standard ASCII test input 123456789, the check value of CRC-16/TELEDISK is 0x0FB3.

What polynomial does CRC-16/TELEDISK use?

CRC-16/TELEDISK uses the 16-bit polynomial 0xA097.

Does CRC-16/TELEDISK use reflected input and output?

For CRC-16/TELEDISK, RefIn is No and RefOut is No.

What is CRC-16/TELEDISK commonly confused with?

The closest published model by parameter overlap is CRC-16/DECT-X, differing from CRC-16/TELEDISK in polynomial.