JavaScript实现计算CRC-16/MODBUS校验位

function calculateCRC16Modbus(dataHexString) {

const dataBytes = [];

for (let i = 0; i < dataHexString.length; i += 2) {

dataBytes.push(parseInt(dataHexString.substr(i, 2), 16));

}

    let crc = 0xFFFF;

    const polynomial = 0xA001;  // This is the polynomial x^16 + x^15 + x^2 + 1


    for (const byte of dataBytes) {

        crc ^= byte;

        for (let i = 0; i < 8; i++) {

            if (crc & 0x0001) {

                crc = ((crc >> 1) ^ polynomial) & 0xFFFF;

            } else {

                crc >>= 1;

            }

        }

    }


    return crc.toString(16).toUpperCase();

}

const dataHexString = "01031C100001";

const crc = calculateCRC16Modbus(dataHexString);

console.log(crc);  // Output the CRC as an uppercase hexadecimal string

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容