首页 > 系统相关 >crc16 linux版本

crc16 linux版本

时间:2024-06-22 23:53:36浏览次数:13  
标签:crc16 buffer len uint16 版本 linux include

#include <stdio.h>
#include <stdint.h>

// CRC-16-CCITT标准的多项式
#define POLY 0x1021

uint16_t crc16(uint16_t crc, const unsigned char *buffer, size_t len) {
    while (len--) {
        crc ^= (*buffer++ << 8);
        for (int i = 0; i < 8; i++) {
            if (crc & 0x8000)
                crc = (crc << 1) ^ POLY;
            else
                crc = crc << 1;
        }
    }
    return crc;
}

int main() {
    // 示例数据
    unsigned char data[] = "Hello, World!";
    size_t data_len = sizeof(data) - 1; // 不包括末尾的 '\0'

    // 初始化CRC值
    uint16_t crc = 0xFFFF; // 通常初始值为0xFFFF

    // 计算CRC16校验和
    crc = crc16(crc, data, data_len);

    // 打印结果
    printf("CRC16: 0x%04X\n", crc);

    return 0;
}

 

标签:crc16,buffer,len,uint16,版本,linux,include
From: https://www.cnblogs.com/hshy/p/18262897

相关文章

  • 一、若依--P2--P5【黑马程序员Java最新AI+若依框架项目开发新方案视频教程,基于RuoYi-V
    学习视频【黑马程序员Java最新AI+若依框架项目开发新方案视频教程,基于RuoYi-Vue3前后端分离版本,从前端到后端再到AI智能化应用全通关】https://www.bilibili.com/video/BV1pf421B71v/?p=6&share_source=copy_web&vd_source=3949d51b57b2891ea14d6e51c792bef6P2:前端框架搭......
  • windows系统配置linux环境wsl
    前言WindowsSubsystemforLinux(WSL)是微软为Windows10和WindowsServer引入的一个特性,它允许用户在Windows操作系统上直接运行Linux环境,而不需要使用虚拟机或双启动系统。WSL的主要目的是提高开发者的生产力,特别是那些需要在Linux和Windows之间切换的开发人员。一、wsl......
  • nvm管理node.js版本
    起因:自己在使用nodejs的时候经常遇到版本问题。每次手动重装更换版本觉得非常麻烦。之前在搭建静态博客的时候,遇到版本问题,生成出来博客静态页白屏。这个就是我部署在github上的静态博客:https://blog.xisoul.cn一、首先卸载Node.js1.打开控制面板锚点2.卸载程序3.找到Node......
  • SElinux内核态的实现-avc、avd的设计篇
    文章目录avc_has_perm的处理逻辑[部分]av_decision访问向量决策的设计allowed、auditallow、auditdenyseqnoflagsavc_has_perm_noaudit检查点函数函数原型参数解释函数逻辑selinux检查结果缓存AVC的设计与实现structselinux_avcstructavc_cacheavc的初始化avc_s......
  • 【Linux】TCP协议
    目录TCP协议TCP协议段格式确认应答机制序号与确认序号超时重传六个标记位连接管理机制三次握手四次挥手窗口大小流量控制滑动窗口拥塞控制延迟应答捎带应答面向字节流粘包TCP异常情况TCP小结基于TCP应用层协议TCP与UDP的对比用UDP实现可靠传输理解listen的第二个参数......
  • Linux平台I2C多字节数据、按页连续读写E2PROM Demo(AT24C16)
    1)Linux平台I2C多字节数据按页连续读写E2PROM之AT24C16小知识,分享给将要学习或者正在学习Linux平台I2C多字节按页连续读写E2PROM开发的同学。2)内容属于原创,若转载,请说明出处。3)提供相关问题有偿答疑和支持。我测试使用的是 E2PROM(AT24C16)芯片,其中内部地址是1010 外部的地......
  • Linux开发讲课9--- Linux的IPC机制-内存映射(Memory Mapping)
            Linux的IPC(Inter-ProcessCommunication,进程间通信)机制是多个进程之间相互沟通的方法,它允许不同进程之间传播或交换信息。Linux支持多种IPC方式,包括但不限于:管道(Pipe):包括无名管道和命名管道(FIFO)。无名管道是半双工的,通常用于具有亲缘关系的进程间通信,如父子......
  • Linux开发讲课10--- Linux软中断
    中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求。你可能要问了,为什么要有中断呢?我可以举个生活中的例子,让你感受一下中断的魅力。比如说你订了一份外卖,但是不确定外卖什么时候送到,也没有别的方法了解外......
  • 常用JS特性浏览器支持版本查询
    此文仅供自己快速查询常用的特性。红色表示不支持。FeatureiOSAndroidChromeFirefoxES6Class10.34.4.44946箭头函数104.4.44522let10(for循环scope错误),114.4.441(strict模式),4944const10(scope错误),114.4.4(非严格模式)41(非严格没块域)......
  • 以指定版本创建django项目
    1、在pacharm的文件菜单创建一个纯净项目,如下图所示使用虚拟环境2、在pycharm的终端窗口通过pip安装3.2版本的django,(tips:已默认设定从阿里云镜像下载),如下图所示:3、使用django-adminstartproject项目名.(django-adminstartprojectpage_dm01.)在项目下创建同名django项目,建......