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.