首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏python3

    python计算CRC16

    python计算CRC16等 智能电能表数据通信协议DL/T 645 - 2007;本部分实现了该协议的部分功能。 temper=('00'+temper).upper()[-2:] h=h+temper ##返回减0x33后的数据 return h ''' 计算16进制字符串的CRC16 校验 @Source 2013-5-10 11:00 ''' def CRC16(s): h='0' for i in range(len(s)/2): h=hex(int ) if len(h)<=1: h='00'+h return h.upper()[-2:] ##68AAAAAAAAAAAA681300DF16 ##print CRC16

    1.8K10发布于 2020-01-07
  • 来自专栏音频DSP方案技术

    crc16校验C语言源码实例解析

    CRC16源码解析:1 函数实现#include <stdbool.h>#include <stdlib.h>#include <stdint.h>#define CRC_POLY_ const unsigned char *input_str, size_t num_bytes ); * * The function crc_16() calculates the 16 bits CRC16 return crc;} /* crc_16 *//* * static void init_crc16_tab( void ); * * For optimal performance uses the CRC16

    1.1K00编辑于 2023-11-03
  • 来自专栏跟Qt君学编程

    CRC16校验与数据解压缩

    使用Qt接口对数据进行CRC16校验与基于zlib算法进行解压缩。 CRC16校验 data:输入数据 len:输入数据长度 standard:实现标准 输出:CRC16校验和 quint16 qChecksum(const char *data,

    1.3K10发布于 2019-09-24
  • 来自专栏全栈程序员必看

    CRC16 的生成及校验原理「建议收藏」

    参考:https://blog.csdn.net/niepangu/article/details/45499383

    7.2K20编辑于 2022-09-20
  • 来自专栏瓜大三哥

    CRC16 编码器的Verilog HDL 实现

    CRC-16 码采用的生成多项式为 G(x) = x16 + x15 + x2 +1 module crc_16( clk,rst,x,crc_reg,crc_s ); input clk; input rst; input x;//serial input output [15:0]crc_reg; output crc_s;//the synchronous signal reg [15:0]crc_reg; reg [3:0]count; reg crc_s; wire

    3.3K60发布于 2018-02-24
  • 来自专栏giantbranch's blog

    CIA hive CRC16算法简述与C,python实现

    ./ 获得代码 在触发包中使用CRC-16/CCITT-FALSE算法(CRC16的算法还是挺多的,这个网站可以计算9种CRC-16的值,我们可以通过这个网站可确认具体的CRC16算法的类型,我便是从这个网站确认的 tiny_crc16(const uint8_t * msg, uint32_t sz){ uint32_t index; uint16_t crc; uint8_t val, t; /* * CRC16 0x21, 0x42, 0x63, 0x84, 0xA5, 0xC6, 0xE7, 0x08, 0x29, 0x4A, 0x6B, 0x8C, 0xAD, 0xCE, 0xEF }; /* * CRC16 crc = crc ^ CRC16_Low; return crc; } python实现 # -*-coding:utf-8-*- # 算法:CRC-16/CCITT-FALSE def crc16 CRC16_Low ^ CRC16_LookupLow[t]; crc = (CRC16_High << 8) ^ CRC16_Low return hex(crc) print crc16

    47100编辑于 2024-12-31
  • 来自专栏python3

    python写的具有CRC16生成、校验

    crccreatearray是直接返回生成crc的数组,calcrc是校验数组是否符合crc16,返回0表示符合,1表示不符合 class crc16: auchCRCHi = [ 0x00, 0xC1 crchi == array[lenarray-2] and crclo== array[lenarray-1] : return 0 else: return 1 test = crc16

    2.3K60发布于 2020-01-10
  • 来自专栏嵌入式技术笔记

    给文件添加CRC校验

    crc校验 crc校验常用的有CRC16和CRC32,在通信中用的比较多(modbus协议等),这里不详细介绍其原理了。 crc校验不同多项式,计算结果是不一样的。 { unsigned int i; unsigned short j,tmp,CRC16; CRC16=0xffff; for ( i = 0; i < len; i++ ) { CRC16 = *ptr ^ CRC16; for ( j = 0; j < 8; j++ ) { tmp=CRC16 & 0x0001; CRC16 =CRC16 >>1; if (tmp) CRC16=CRC16 ^ 0xa001; } *ptr++; } return = 0) cout<<"check file crc16 fault! please add crc16 later!"

    5.6K20发布于 2021-05-31
  • 来自专栏Golang语言社区

    【投稿专区】crc校验码的计算

    而一般电气、自动化仪表的crc16校验,多项式码选用16进制A001。 Go 语言实现如下: // 传入数据内容,返回 crc校验码 func Crc16Check(data []byte) []byte { var crc16 uint16 = 0xFFFF for j := 0; j < 8; j++ { if crc16&0x0001 > 0 { crc16 = (crc16 >> 1) ^ 0xA001 } else { crc16 >>= 1 packet[0] = byte(crc16 >> 8) return packet }

    4.4K80发布于 2018-03-26
  • 来自专栏嵌入式项目开发

    CRC校验算法详解、C语言实现

    CRC16CRC16生成的校验码长度为16位(2字节)。它适用于中等大小的数据块校验,例如在串行通信中或者对短消息进行校验。 2.2 文件校验-CRC16 下面是使用CRC16并采用CCITT标准生成多项式(0x1021,即多项式x^16 + x^12 + x^5 + x^0)来计算文件CRC16校验值的C语言代码示例。 (buffer, bytes_read); } close(fd); // 输出CRC16校验值 printf("CRC16 checksum: 0x%04X\n", crc); return 0; } 这个示例代码中的init_crc16_table函数用于生成CRC16的查找表,而crc16函数则利用该表计算输入数据的CRC16校验值。 在主函数main中,程序会读取文件的内容并调用crc16函数计算CRC16校验值,最后输出该值。 2.3 文件校验-CRC32 下面是一个使用CRC32算法计算文件校验和的C语言代码示例。

    3.3K10编辑于 2025-05-27
  • 来自专栏知识分享

    单片机模块化程序: CRC校验

    前言   这一节说明一下数据传输中常用的CRC校验   所谓CRC校验,说白了就是对数据做下计算,然后把计算结果放到最后面   平时用的最多的算是CRC16 直接上菜 计算CRC /** * @brief calculate CRC * @param *modbusdata: Source data address * @param length: data length * @param * @retval CRC16 * @param *modbusdata: Read data address * @param length: Read data length * @param * @retval 1:CRC16 说明:    1.最后两位 F7 和 BE就是经过CRC16计算之后的数据;高位在前,低位在后   2.整个数据发给另一个设备以后,另一个设备用同样的方式计算 01 00 55 aa 的CRC16值    扩展   大部分设备的CRC16计算方式,这个地方是 0xffff, 但是也有0的情况 ?

    1.3K20发布于 2019-12-31
  • 来自专栏TencentOS-tiny

    Hexo博客进阶教程(一)| 优化文章永久链接为数字编号

    month/:day/:title/ #permalink_defaults: permalink: posts/:abbrlink/ abbrlink: alg: crc32 #support crc16 default) and hex 下面解释说明一下: 首先指定Hexo文章永久链接的格式,接下来两个是abbrlink插件的设置: alg -- Algorithm (currently support crc16 and crc32, which crc16 is default) rep -- Represent (the generated link could be presented in hex or dec value) 这两个设置的示例如下: crc16 & hex https://post.zz173.com/posts/66c8.html crc16 & dec https://post.zz173

    2K20发布于 2020-07-16
  • 来自专栏数据库相关

    [hash tag]为什么说redis的key名称中带上{},查询性能会提升

    = CRC16(key) % 16384 ​如果 Key 包含 {},Redis 会 ​只计算 {} 内的内容​ 的 CRC16,然后取模 16384 得到 Hash Slot:plaintext复制hash_slot = CRC16(key_inside_braces) % 16384 ​2. (3)避免 Hash Tag 冲突(可选)​​ 如果多个 Key 的 {} 内容不同,但 CRC16 计算后落在同一个 Slot,可能会导致 ​Hash 冲突​(虽然概率很低)。 但这种情况极少发生,因为 CRC16 的分布比较均匀。 ​3. 注意事项 1 {} 内的内容越短越好 {} 内的内容会影响 Hash Slot 计算,如果内容太长,可能会增加 CRC16 计算的开销(但影响很小)。

    56310编辑于 2025-07-30
  • 来自专栏嵌入式学习

    modbus-RTU-crc16——c语言

    参考:https://www.cnblogs.com/skullboyer/p/8342167.html 一、CRC16校验码的使用   现选择最常用的CRC-16校验,说明它的使用方法。    二、CRC16校验码计算方法   常用查表法和计算法。 ------------------------------------------------- unsigned int CRC16; #define SEED 0xFFFF //initialization for CRC16 #define GP 0xA001 //generating polynomial //for standard CRC16 //(remainder of division ) //to start a new CRC, set CRC16 = SEED //then for each byte call Calc_CRC(byte, &CRC16); //CRC16 will

    4.5K10发布于 2020-09-07
  • 来自专栏look Java

    Redis-高可用高并发集群配置

    Redis集群的执行流程分析 哈希槽说明 Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个结果 当你往Redis Cluster中加入一个Key时,会根据crc16(key) mod 16384计算这个key应该分布到哪个hash slot中,一个hash slot中会有很多key和value。 通俗来说 Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽,举个例子,比如当前集群有3个节点,那么: 节点 A 执行流程分析 假如redis集群里面能存放90个key,那么redis集群把90key平分到3个主机 redis对每个主机里面30个存储位置都编号,当应用连接到主机1上面时,应该发送一个写的命令 主机使用crc16 算出槽号 如果槽号在1-30 可以直接操作主机1 如果槽号在31-60那么redis会转发到主机2 如果应该再发一个命令set age 22 那么主机2使用crc16再算槽号再转发

    38110编辑于 2023-12-07
  • 来自专栏嵌入式项目开发

    C语言实例_CRC校验算法

    二、示例代码 以下C语言代码演示如何获取一段数据的CRC校验值: #include <stdio.h> #include <stdint.h> // CRC校验函数 uint16_t crc16(uint8 return crc; } // 封装的CRC校验函数调用 uint16_t calculateCRC(uint8_t *data, int length) { return crc16 crc = calculateCRC(message, length); printf("CRC: 0x%04X\n", crc); return 0; } 在上面代码中,crc16 calculateCRC 函数是对 crc16 的封装,用于调用CRC校验函数并返回校验结果。 3.1 发送方(封装校验值) #include <stdio.h> #include <stdint.h> // CRC校验函数 uint16_t crc16(uint8_t *data, int length

    1.1K31编辑于 2023-08-13
  • 来自专栏全栈程序员必看

    Modbus 通讯协议 (RTU传输模式)「建议收藏」

    Addr Fun Data start reg hi Data start reg lo Data #of regs hi Data #of regs lo CRC16 hi CRC16 lo 06H Addr Fun DO start reg hi DO start reg lo DO #of regs hi DO #of regs lo CRC16 hi CRC16 lo 11H 01H 00H Addr Fun Byte count Data CRC16 hi CRC16 lo 11H 01H 01H 2AH XXH XXH 数据 0 0 0 0 0 0 DO2 DO1 MSB Addr Fun Byte count Data1 hi Data1 Lo Data 2 hi Data2 lo Data3 hi Data3 lo CRC16 hi CRC16 lo 11H 03H Addr Fun CRC16 hi CRC16 lo 11H 11H XXH XXH 图示 2-21报告从机标识—-查询 响应 图2 – 22所示正常响应格式,数据内容对应每台控制器的类型。

    7.4K22编辑于 2022-09-14
  • 来自专栏知识分享

    2.5-Air302(NB-IOT)-基础外设-串口(485,422),CRC校验

    local datatable={}; for i=1,RevLen do datatable[i] = data:byte(i); end log.info("CRC16 =", CRC16(datatable,RevLen)); --计算CRC function CRC16(modbusdata,length) local i=0;local j=0;local function CRC16Flage(modbusdata,length) local Receive_CRC = 0;local calculation = 1; Receive_CRC = CRC16

    75342发布于 2020-10-23
  • SD NAND存储功能描述(12)时钟控制和CRC

    CRC16在使用一条DAT线路的情况下,CRC16用于块传输模式下的有效负载保护。CRC校验和是一个16位的值,计算方法如下:第一个位是相应块的第一个数据位。 在单数据线模式和宽总线模式下应使用相同的CRC16方法在宽总线模式下,CRC16在每条线路上分别完成。 CRC16例子512字节的0xFF data-->CRC16=0x7FA1错误条件 CRC与非法命令所有命令都由CRC (cvclic redundancy check)位保护。

    41310编辑于 2024-07-08
  • 来自专栏知识分享

    用ESP8266+android,制作自己的WIFI小车(ESP8266篇)

    gpio.write(6,0)--you qian gpio.write(5,0)--you hou end end) --计算CRC function CRC16 我规定的 前进  0xAA,0x55,0x01,((传过来的数0-100,根据手机倾斜角度)速度PWM),CRC16低位,CRC16高位 后退  0xAA,0x55,0x02,((传过来的数0-100, 根据手机倾斜角度)速度PWM),CRC16低位,CRC16高位 右转  0xAA,0x55,0x03,((传过来的数0-100,根据手机倾斜角度)速度PWM),CRC16低位,CRC16高位 左转  0xAA ,0x55,0x04,((传过来的数0-100根据手机倾斜角度)速度PWM),CRC16低位,CRC16高位 停止  0xAA,0x55,0x05,((0)速度PWM),CRC16低位,CRC16高位 下面是自己写的CRC16校验,,对于不是提供了CRC16校验了,为什么还要自己写,...看下面哈 --计算CRC function CRC16(modbusdata,length) local

    6.6K80发布于 2018-04-12
领券