AFON // радиотехник affonya@mail.ru
← Все проекты JavaScript

Калькулятор CRC-8

Контрольная сумма CRC-8 (полином 0x07) для строки.

JS.40 · Радиотехника

Задача

Посчитать CRC-8 строки по стандартному полиному.

Алгоритм

Для каждого байта: xor в регистр, затем 8 сдвигов с xor полинома при выдвинутой единице; маска 0xFF держит 8 бит.

Исходный код

⇩ Скачать 40-crc8-kalkulyator.js

// CRC-8 (полином 0x07)
function crc8(bytes) {
  let crc = 0;
  for (const b of bytes) {
    crc ^= b;
    for (let i = 0; i < 8; i++)
      crc = (crc & 0x80) ? ((crc << 1) ^ 0x07) & 0xFF : (crc << 1) & 0xFF;
  }
  return crc;
}

const data = [...'123456789'].map(c => c.charCodeAt(0));
console.log('CRC-8:', '0x' + crc8(data).toString(16).toUpperCase().padStart(2, '0'));

Пояснения

Контрольное значение CRC-8 для «123456789» равно 0xF4. Применяется в I2C SMBus, 1-Wire, CAN.

Смотрите также

Распиновки и шины