首页 > 其他分享 >CRC_CCITT js版的计算函数

CRC_CCITT js版的计算函数

时间:2024-07-12 14:45:46浏览次数:9  
标签:CCITT crc buffer js CRC let

CRC_CCITT,特征多项式:X16+X12+X5+1,即多项式系数为 0x1021,初始值为全 0,对于单个字节来说最高位先计算需要取反直接输出。


function calculateCRC_CCITT(buffer) {
    const POLYNOMIAL = 0x1021;
    let crc = 0x0000; // Initial value set to all 0s for this specific case

    for (let i = 0; i < buffer.length; i++) {
        crc ^= (buffer[i] << 8); // XOR the current byte with the CRC value, shifted left by 8 bits
        for (let j = 8; j > 0; j--) {
            if (crc & 0x8000) { // Check highest bit of crc
                crc = ((crc << 1) & 0xFFFF) ^ POLYNOMIAL;
            } else {
                crc = (crc << 1) & 0xFFFF;
            }
        }
    }
    return crc & 0xFFFF; // Ensure that the final result fits within 16 bits
}

const TYPES = new Uint8Array([0x07]);
const LENS = new Uint8Array([0x01]);
const ADDRESS = new Uint8Array([0x00, 0x00]); // Start address
const DATAS = new Uint8Array([0x01]); // Number of bytes to read

// Concatenate all parts except HEAD1 which is not included in CRC calculation
const crcData = new Uint8Array([
    ...TYPES,
    ...LENS,
    ...ADDRESS,
    ...DATAS
]);

const crcResult = calculateCRC_CCITT(crcData);
console.log('CRC-CCITT:', crcResult.toString(16).toUpperCase().padStart(4, '0'));

标签:CCITT,crc,buffer,js,CRC,let
From: https://www.cnblogs.com/XingXiaoMeng/p/18298295

相关文章

  • html+js实现选中左边的数据到右边
    效果后台要开发个功能,给游戏内的用户赠送道具,先把道具列表展示,然后选择要增送的道具,可以加上道具图片之类的,美化index.html页面没有美化,只是实现了效果。<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device......
  • 课程设计——基于JSP + Servlet的学生信息管理系统
    基于JSP+Servlet的学生信息管理系统该项目为课程设计项目1.总体功能描述本系统利用JavaWeb技术实现了学生信息管理系统,具有简单的学生信息管理功能。实现了以下功能模块:院系信息管理模块,学生信息管理模块,课程信息管理模块,成绩管理模块并能根据登入用户的权限自动......
  • threejs画布叠加在cesium画布上不显示
    这个问题可能是由于Three.js和Cesium在渲染顺序或者渲染上下文方面存在冲突导致的。Three.js和Cesium都是用于创建3D或2D地图的库,它们各自管理自己的渲染画布(WebGL上下文)。解决方法: 确保Cesium初始化先于Three.js。Cesium需要完全初始化并且渲染其画布之后,Three.js才能在同......
  • CRC我就拿下了
    国人讲CRC的没有什么能讲明白的文章,除了一篇《我学习CRC32、CRC16、CRC原理和算法的总结(与WINRAR结果一致)》,这里先感谢他,另,他也有一些没有说明白的地方,怎么说呢,还是鄙人自己来吧。我弄明白CRC这个原理和算法主要参考的是上面的国人的那篇和这个外国的《APAINLESSGUIDETOC......
  • js 数组方法 - 查找 - indexOf()、includes()、find()、findIndex()、filter()、lastI
    indexOf()该方法可以返回数组中指定元素的索引,如果不存在,则返回-1。constarr=["apple","banana","orange"];constindex=arr.indexOf("banana");console.log(index);//输出:1constarr2=["aaa","bbb","ccc",9......
  • Linux jq 命令讲解与实战操作(json字符串解析工具)
    Linuxjq命令讲解与实战操作(json字符串解析工具)大数据老司机2023-08-0914:23 一、概述jq 是一个强大的命令行工具,用于处理 JSON 格式的数据。它可以帮助你查询、过滤、修改和处理 JSON 数据,使得在命令行环境下处理 JSON 变得非常方便。GitHub地......
  • vue js公共截取URL的key: value方法
    letURL=http://localhost:8080/#/ficu/?taskid=1001-2271023&pageId=146&ssid=74529457205982&channelld=IPCC&userId=xx//取值URLlethref=window.location.href//拿到完整的URLlethash=window.location.hash//取#后面的所有URL//取值方法getUrlPara......
  • 如何用Vue3和Plotly.js创建交互式表格?
    本文由ScriptEcho平台提供技术支持项目地址:传送门Plotly.js动态生成HTML表格应用场景介绍在数据分析和可视化领域,经常需要以表格的形式展示数据。Plotly.js是一款功能强大的JavaScript库,不仅可以创建交互式图表,还可以动态生成HTML表格。代码基本功能介绍本代......
  • 如何用Vue3和Plotly.js绘制交互式瀑布图
    本文由ScriptEcho平台提供技术支持项目地址:传送门使用Plotly.js在Vue中创建瀑布图应用场景瀑布图广泛用于可视化财务报表和展示增量变化,例如利润表、现金流量表和收入分析。它们通过将正值和负值堆叠在垂直轴上,清晰地展示每个阶段的贡献和变化。基本功能本代码演......
  • 如何用Vue3和Plotly.js创建交互式平行坐标图
    本文由ScriptEcho平台提供技术支持项目地址:传送门Vue.js中使用Plotly.js创建平行坐标图应用场景介绍平行坐标图是一种可视化高维数据集的强大技术。它可以帮助我们探索不同维度之间的关系,并识别模式和异常值。在Vue.js应用程序中,我们可以使用Plotly.js库轻松创......