- 浏览: 296266 次
- 性别:
- 来自: 广州
文章分类
#include <stdio.h> int reverse_bits(int input, int bits) { int i, result = 0; for (i = 0; i < bits; i++) { result = (result << 1) | (input & 1); input >>= 1; } return result; } unsigned short crc5(unsigned char crc, unsigned char poly, unsigned char *ptr, int len) { unsigned char i; while (len--) { for (i = 0x80; i != 0; i >>= 1) { if ((crc & 0x10) != 0) { crc <<= 1; crc ^= poly; } else { crc <<= 1; } if ((*ptr & i) != 0) { crc ^= poly; } } ptr++; } return crc; } unsigned short crc7(unsigned char crc, unsigned char poly, unsigned char *ptr, int len) { unsigned char i; while (len--) { for (i = 0x80; i != 0; i >>= 1) { if ((crc & 0x40) != 0) { crc <<= 1; crc ^= poly; } else { crc <<= 1; } if ((*ptr & i) != 0) { crc ^= poly; } } ptr++; } return crc; } unsigned short crc8(unsigned char crc, unsigned char poly, unsigned char *ptr, int len) { unsigned char i; while (len--) { for (i = 0x80; i != 0; i >>= 1) { if ((crc & 0x80) != 0) { crc <<= 1; crc ^= poly; } else { crc <<= 1; } if ((*ptr & i) != 0) { crc ^= poly; } } ptr++; } return crc ^ 0x55; } unsigned short crc16(unsigned short crc, unsigned short poly, unsigned char *ptr, int len) { unsigned char i; while (len--) { for (i = 0x80; i != 0; i >>= 1) { if ((crc & 0x8000) != 0) { crc <<= 1; crc ^= poly; } else { crc <<= 1; } if ((*ptr & i) != 0) { crc ^= poly; } } ptr++; } return crc; } unsigned int crc32(unsigned int crc, unsigned int poly, unsigned char *ptr, int len) { unsigned char i; while (len--) { for (i = 0x80; i != 0; i >>= 1) { if ((crc & 0x80000000) != 0) { crc <<= 1; crc ^= poly; } else { crc <<= 1; } if ((*ptr & i) != 0) { crc ^= poly; } } ptr++; } return crc; } int main(int argc, char** argv) { unsigned char buff[] = {0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0xd2, 0xe3}; unsigned char mac_list[][6] = { {0x01, 0x00, 0x5e, 0x00, 0x00, 9}, {0x01, 0x00, 0x5e, 0x00, 0x00, 13}, {0x01, 0x00, 0x5e, 0x00, 0x00, 48}, {0x01, 0x00, 0x5e, 0x00, 0x00, 52}, {0x01, 0x00, 0x5e, 0x00, 0x00, 66} }; printf("rev: 0x%02X -> 0x%02X\n", 0x11112222, reverse_bits(0x11112222, 32)); printf("crc5: 0x%02X\n", crc5(0x09, 0x09, buff, sizeof(buff) / sizeof(buff[0]))); printf("crc7: 0x%02X\n", crc7(0x00, 0x09, buff, sizeof(buff) / sizeof(buff[0]))); printf("crc8: 0x%02X\n", crc8(0x00, 0x07, buff, sizeof(buff) / sizeof(buff[0]))); printf("crc16: 0x%04X\n", crc16(0x0000, 0x1021, buff, sizeof(buff) / sizeof(buff[0]))); printf("crc32: 0x%08X\n", crc32(0xFFFFFFFF, 0x04c11db7, buff, sizeof(buff) / sizeof(buff[0]))); /* printf("crc32: 0x%08X\n", crc32(0, 0x04c11db7, mac_list[0], 6)); printf("crc32: 0x%08X\n", crc32(0, 0x04c11db7, mac_list[1], 6)); printf("crc32: 0x%08X\n", crc32(0, 0xC704DD7B, mac_list[2], 6)); printf("crc32: 0x%08X\n", crc32(0, 0xC704DD7B, mac_list[3], 6)); printf("crc32: 0x%08X\n", crc32(0, 0xC704DD7B, mac_list[4], 6));*/ return 0; } /* test pass: crc7 --- crc-7/MMC crc16 --- crc-16/IBM crc-ccitt --- crc16-ccitt */
发表评论
-
研华推出基于Freescale i.MX53的ARM核心板
2012-02-10 13:36 1095http://www.eepw.com.cn/article/ ... -
gm8120
2011-12-06 20:37 0GM8120 -
core dump
2011-12-05 16:34 905示例程序test.c void dummy_funct ... -
linux print stack trace
2011-12-05 14:04 1056#include <execinfo ... -
I2C bus glue for Cirrus EP93xx
2011-07-26 11:44 1255转自 http://arm.cirrus.com/f ... -
ramdisk
2011-07-26 10:32 8561. download ramdisk.gz 2. g ... -
boa
2011-07-26 10:29 1015compile boa 1. ./configu ... -
Linux下单网卡绑定多IP与多网卡共用单IP
2011-07-20 09:46 1041在Linux下有时候需要给一个网卡绑定多个IP,本文介绍在Re ... -
实战Ubuntu下单网卡绑定多IP
2011-07-20 09:45 1014常常我们有需要一个网卡象windows一样设置多个IP。 ... -
修改环境变量
2011-04-26 16:49 942gedit ~/.bash_profile ... -
编译JVM
2011-04-26 16:12 1062OS: CentOS5.5 notice: remove j ... -
linux 组播支持
2011-04-20 11:42 1015route add -net 224.0.0.0 netmas ... -
POSIX conformance testing by UNIFIX
2011-04-16 21:39 747换了编译器重新编译内核,启动出现POSIX confo ... -
安装glib
2011-04-16 21:38 915./configure --prefix=/usr & ... -
shine
2011-04-16 21:36 10471. /mnt/nfs # time ./shin ... -
交叉编译QT
2011-04-16 21:34 1431// 下载文件 qt-x11-opensource- ... -
sudo
2011-04-16 21:30 8451. su - 2. visudo /etc/ ... -
Unable to find the Ncurses libraries
2011-04-16 21:29 1026用make menuconfig时出现错误: Una ... -
用execl实现静态ip地址
2011-04-16 21:28 905#include <stdio.h> #i ... -
linux挂载U盘
2011-04-16 21:27 9521. ~ # fdisk -l 2. ~ #mkdi ...
相关推荐
本工具支持常用的所有CRC校验 比如: CRC-4/TU CRC-5/EPC CRC-5/ITU CRC-6/TU CRC-7/MMC CRC-8 CRC-8/ITU CRC-8/ROHC CRC-8/MAXIM CRC-16/BM CRC-16/MAXIM CRC-16/USB CRC-16/MODBUS CRC-16/CCITT CRC-16/CCITT-...
CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛用于数据传输和存储中的错误检测方法。它通过计算数据的校验码来检查数据的完整性,确保数据在传输或存储过程中没有发生错误。CRC计算器是用于生成或验证CRC...
CRC,即循环冗余校验(Cyclic Redundancy Check),是一种广泛应用于数据通信和存储中的错误检测技术。它通过计算数据的一种特定校验值,来检查数据在传输或存储过程中是否发生了错误。CRC的基本原理是利用多项式除...
CRC,即循环冗余校验(Cyclic Redundancy Check),是一种广泛应用于数据通信和存储领域的错误检测技术。CRC通过附加一个简短的校验码到数据块来确保数据的完整性,这个校验码是根据数据计算出来的。在标题和描述中...
标题提及了四种CRC类型:CRC8、CRC16、CRC-CCITT和CRC32,它们分别代表了不同宽度的CRC校验码: 1. **CRC8**:这是一种8位的CRC校验,适用于校验较短的数据块。它使用一个8位的生成多项式,计算过程相对简单,常...
标题中的“crc_add_crc8_CRC16_matlab_CRC24_crc_”暗示这是一个关于在MATLAB环境中实现CRC计算的程序,涵盖了CRC8、CRC16和CRC24三种不同长度的校验码。CRC8适用于简单的错误检测场景,CRC16则提供更强的校验能力,...
在计算机网络通信与存储技术中,循环冗余校验(CRC,Cyclic Redundancy Check)是一种校验数据完整性的常用手段。其原理基于多项式除法,通过对数据位串进行运算,得到一个短的固定位数的校验值,即CRC校验码。CRC...
CRC32,全称为Cyclic Redundancy Check(循环冗余校验),是一种广泛用于数据传输和存储中的错误检测方法。在本主题中,我们主要关注如何利用CRC32的特性来尝试解密某些特定的压缩包,尤其是针对标题中提到的"crc32-...
在本压缩包中,"csw-crc32-crc16-crc8.zip"包含了一个C语言实现的CRC校验库,它提供了对CRC8、CRC16和CRC32三种不同宽度的CRC校验函数。 首先,CRC8是最简单的版本,适用于只需要较小校验码的情况。CRC8通常用于低...
CRC计算器是用于生成这些校验码的工具,本项目实现的CRC计算器支持CRC4、CRC5、CRC6、CRC7、CRC8、CRC16和CRC32等多种不同的CRC算法,覆盖了从小到大多种常用位宽。 CRC的核心思想是基于多项式除法,将数据看作一个...
CRC32(Cyclic Redundancy Check,循环冗余校验)是一种广泛应用于数据通信和存储领域的错误检测方法。在C#编程环境中,CRC32校验通常用于确保数据在传输或存储过程中没有发生错误。这个压缩包"crc_32_c.rar"包含了...
CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛用于数据传输和存储中的错误检测方法。它通过计算数据的校验码来检查数据的完整性,确保数据在传输或存储过程中没有发生错误。CRC8是CRC的一种变体,其中“8...
CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛用于数据传输和存储中的错误检测方法。它通过在数据后面附加一个校验码来确保数据的完整性。CRC32是CRC的一种特定实现,使用32位的校验码。在本主题中,我们...
CRC,全称是Cyclic Redundancy Check,中文译为循环冗余校验,是一种广泛应用于数据通信和存储系统中的错误检测技术。它通过在数据传输或存储前添加一个校验码来验证数据的完整性,确保数据在传输过程中没有发生错误...
CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛用于数据传输错误检测的校验码技术。它通过计算数据的一种特定函数,生成一个简短的固定位数的校验码,附加在数据后面,接收方再进行同样的计算,以检查数据...
IEEE 802.3 标准中规定的 CRC32 算法 在STM32H743硬件CRC 与软件CRC,同时包括MD5算法,还包含crc4_itu、crc5_epc、crc5_itu、crc5_usb、crc6_itu、crc7_mmc、crc8、crc8_itu、crc8_rohc、crc8_maxim、crc16_ibm、...
CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛用于数据传输错误检测的校验码技术。CRC编码是通过一个特定的数学算法,即生成多项式,对原始数据进行运算,生成一个固定位数的校验码,附加在原始数据后面...
CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛用于数据传输错误检测的校验码技术。它通过计算数据的二进制串在某种规则下的余数,将这个余数附加到数据后面,形成一个校验码。接收方同样对接收到的数据...
CRC,即循环冗余校验,是一种广泛应用于数据通信和存储中的错误检测方法。CRC的基本原理是通过一种特定的数学算法,对传输或存储的数据进行校验,以确保数据的完整性。这种算法基于二进制的异或(XOR)运算,而非传统...