crc8校验软件 多项式8005 crc8 多项式 - 电脑知识 - 【三明电脑网】_三明电脑维修_三明笔记本电脑维修_监控安装_市区上门维修

全国统一24小时服务热线:400-0000-000400-0000-000  / 1399000000

当前位置:首页 > 电脑知识 > 正文

crc8校验软件 多项式8005 crc8 多项式

发布日期:2021-05-04

摘要:java的crc8校验,按指定多项式,求助test;public class test {public static void main(String[] args) {byte[] ptr = { ...

crc8校验软件 多项式8005

java的crc8校验,按指定多项式,求助

test;public class test {public static void main(String[] args) {byte[] ptr = { 1, 1;&gt, 1, 1 }; 1) ^ 0x8c;} else {crc = crc >> 1以下是我的分析,不知是否正确;1)^0x8c);和 crc=(byte)(crc>>1).println(); +( (1 >> 1) ^ 0x8c ) ),你参考下1:" 导致这个问题是因为byte的最高位符号位, 1, 1;byte res = getCrc(ptr);System;System.out.println((byte)( (1 &gt,转换的时候就出错了2、示例代码;&gt:package com;}public static byte getCrc(byte[] ptr) {int crc = 0.out; 1) ^ 0x8c ) + ";for (int i = 0; i &gt、首先来看你打java代码:crc=(byte)((crc&gt

crc

CRC 中的生成多项式,是有很多标准的。

其统一的规律是:最高位、最低位都为1。

8位CRC校验通常用的是CRC-8,其生成多项式为:107H = 1 0000 0111B进行异或运算时,最高位,就算是移出去了,因此,只用 07H 进行异或计算即可。

跪求24位CRC校验的C语言程序,生成多项式g(x)=x^24+x^23+x^6+x^5...

long int GenerateChecksumCRC24_D32(unsigned long ulNumValues,unsigned long *pulData) { unsigned long i,ulData,lfsr = 0xFFFFFF; for (i= 0x0; i { ulData = pulData[i]; lfsr = CRC24_D32(lfsr,ulData); } return lfsr; } static unsigned long CRC24_D32(const unsigned long old_CRC, const unsigned long Data) { unsigned long D [32]; unsigned long C [24]; unsigned long NewCRC [24]; unsigned long ulCRC24_D32; unsigned long int f, tmp; unsigned long int bit_mask = 0x000001; tmp = 0x000000;// Convert previous CRC value to binary.bit_mask = 0x000001; for (f = 0; f { C[f] = (old_CRC & bit_mask) >> f; bit_mask = bit_mask }// Convert data to binary.bit_mask = 0x000001; for (f = 0; f { D[f] = (Data & bit_mask) >> f; bit_mask = bit_mask }// Calculate new LFSR value.NewCRC[0] = D[31] ^ D[30] ^ D[29] ^ D[28] ^ D[27] ^ D[26] ^ D[25] ^ D[24] ^ D[23] ^ D[17] ^ D[16] ^ D[15] ^ D[14] ^ D[13] ^ D[12] ^ D[11] ^ D[10] ^ D[9] ^ D[8] ^ D[7] ^ D[6] ^ D[5] ^ D[4] ^ D[3] ^ D[2] ^ D[1] ^ D[0] ^ C[0] ^ C[1] ^ C[2] ^ C[3] ^ C[4] ^ C[5] ^ C[6] ^ C[7] ^ C[8] ^ C[9] ^ C[15] ^ C[16] ^ C[17] ^ C[18] ^ C[19] ^ C[20] ^ C[21] ^ C[22] ^ C[23]; NewCRC[1] = D[23] ^ D[18] ^ D[0] ^ C[10] ^ C[15]; NewCRC[2] = D[24] ^ D[19] ^ D[1] ^ C[11] ^ C[16]; NewCRC[3] = D[25] ^ D[20] ^ D[2] ^ C[12] ^ C[17]; NewCRC[4] = D[26] ^ D[21] ^ D[3] ^ C[13] ^ C[18]; NewCRC[5] = D[31] ^ D[30] ^ D[29] ^ D[28] ^ D[26] ^ D[25] ^ D[24] ^ D[23] ^ D[22] ^ D[17] ^ D[16] ^ D[15] ^ D[14] ^ D[13] ^ D[12] ^ D[11] ^ D[10] ^ D[9] ^ D[8] ^ D[7] ^ D[6] ^ D[5] ^ D[3] ^ D[2] ^ D[1] ^ D[0] ^ C[0] ^ C[1] ^ C[2] ^ C[3] ^ C[4] ^ C[5] ^ C[6] ^ C[7] ^ C[8] ^ C[9] ^ C[14] ^ C[15] ^ C[16] ^ C[17] ^ C[18] ^ C[20] ^ C[21] ^ C[22] ^ C[23]; LFSR代码示例 签名是一个多项式为x24+ x23+ x6+ x5+x+1的24位CRC。

初始值为0xFFFFFF。

AN-1160 Rev. A | Page 7 of 8 NewCRC[6] = D[28] ^ D[18] ^ D[5] ^ D[0] ^ C[10] ^ C[20]; NewCRC[7] = D[29] ^ D[19] ^ D[6] ^ D[1] ^ C[11] ^ C[21]; NewCRC[8] = D[30] ^ D[20] ^ D[7] ^ D[2] ^ C[12] ^ C[22]; NewCRC[9] = D[31] ^ D[21] ^ D[8] ^ D[3] ^ C[0] ^ C[13] ^ C[23]; NewCRC[10] = D[22] ^ D[9] ^ D[4] ^ C[1] ^ C[14]; NewCRC[11] = D[23] ^ D[10] ^ D[5] ^ C[2] ^ C[15]; NewCRC[12] = D[24] ^ D[11] ^ D[6] ^ C[3] ^ C[16]; NewCRC[13] = D[25] ^ D[12] ^ D[7] ^ C[4] ^ C[17]; NewCRC[14] = D[26] ^ D[13] ^ D[8] ^ C[0] ^ C[5] ^ C[18]; NewCRC[15] = D[27] ^ D[14] ^ D[9] ^ C[1] ^ C[6] ^ C[19]; NewCRC[16] = D[28] ^ D[15] ^ D[10] ^ C[2] ^ C[7] ^ C[20]; NewCRC[17] = D[29] ^ D[16] ^ D[11] ^ C[3] ^ C[8] ^ C[21]; NewCRC[18] = D[30] ^ D[17] ^ D[12] ^ C[4] ^ C[9] ^ C[22]; NewCRC[19] = D[31] ^ D[18] ^ D[13] ^ C[5] ^ C[10] ^ C[23]; NewCRC[20] = D[19] ^ D[14] ^ C[6] ^ C[11]; NewCRC[21] = D[20] ^ D[15] ^ C[7] ^ C[12]; NewCRC[22] = D[21] ^ D[16] ^ C[8] ^ C[13]; NewCRC[23] = D[31] ^ D[30] ^ D[29] ^ D[28] ^ D[27] ^ D[26] ^ D[25] ^ D[24] ^ D[23] ^ D[22] ^ D[16] ^ D[15] ^ D[14] ^ D[13] ^ D[12] ^ D[11] ^ D[10] ^ D[9] ^ D[8] ^ D[7] ^ D[6] ^ D[5] ^ D[4] ^ D[3] ^ D[2] ^ D[1] ^ D[0] ^ C[0] ^ C[1] ^ C[2] ^ C[3] ^ C[4] ^ C[5] ^ C[6] ^ C[7] ^ C[8] ^ C[14] ^ C[15] ^ C[16] ^ C[17] ^ C[18] ^ C[19] ^ C[20] ^ C[21] ^ C[22] ^ C[23]; ulCRC24_D32 = 0;// LFSR value from binary to hex.bit_mask = 0x000001; for (f = 0; f { ulCRC24_D32 = ulCRC24_D32 + NewCRC[f] * bit_mask; bit_mask = bit_mask } return(ulCRC24_D32 & 0x00FFFFFF); }

如何计算十五个字节的CRC8校验

在CRC计算时只用8个数据位,起始位及停止位,如有奇偶校验位也包括奇偶校验位,都不参与CRC计算。

CRC计算方法是: 1、 加载一值为0XFFFF的16位寄存器,此寄存器为CRC寄存器。

2、 把第一个8位二进制数据(即通讯信息帧的第一个字节)与16位的CRC寄存器的相异或,异或的结果仍存放于该CRC寄存器中。

3、 把CRC寄存器的内容右移一位,用0填补最高位,并检测移出位是0还是1。

4、 如果移出位为零,则重复第三步(再次右移一位);如果移出位为1,CRC寄存器与0XA001进行异或。

5、 重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理。

6、 重复步骤2和5,进行通讯信息帧下一个字节的处理。

7、 将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进行交换 8、 最后得到的CRC寄存器内容即为:CRC校验码。

crc校验多项式码

即,则正确,其余数为校验字段。

例如: 除法没有数学上的含义,而是采用计算机的模二除法借助于多项式除法: 1011001;对应m(x)=x6+x4+x3+1 假设生成多项式为:发出的传输字段为: 1 0 1 1 0 0 1 1111 信息字段 校验字段 接收方:使用相同的生成码进行校验, 给出余数(1111)的计算步骤:g(x)=x4+x3+1;则对应g(x)的代码为: 11001 x4m(x)=x10+x8+x7+x4 对应的代码记为:10110010000; 采用多项式除法: 得余数为: 1111 (即校验字段为:1111) 发送方:接收到的字段/生成码(二进制除法) 如果能够除尽:信息字段代码为...

crc16校验的c语言程序

下面我们以CRC-16为例来说明任意长度数据流的CRC校验码生成过程。

我们采用将数据流分成若干个8bit字符,并由低字节到高字节传送的并行方法来求CRC校验码。

具体计算过程为:用一个16bit的寄存器来存放CRC校验值,且设定其初值为0x0000;将数据流的第一个8bit与16bit的CRC寄存器的高字节相异或,并将结果存入CRC寄存器高字节;CRC寄存器左移一位,最低1bit补零,同时检查移出的最高1bit,若移出的最高1bit为0,则继续按上述过程左移,若最高1bit为1,则将CRC寄存器中的值与生成多项式码相异或,结果存入CRC寄存器值;继续左移并重复上述处理方法,直到将8bit数据处理完为止,则此时CRC寄存器中的值就是第一个8bit数据对应的CRC校验码;然后将此时CRC寄存器的值作为初值,用同样的处理方法重复上述步骤来处理下一个8bit数据流,直到将所有的8bit字符都处理完后,此刻CRC寄存器中的值即为整个数据流对应的CRC校验码。

下面示出了其计算过程的流程图: 在用C语言编写CRC校验码的实现程序时我们应该注意,生成多项式 对应的十六进制数为0x18005,由于CRC寄存器左移过程中,移出的最高位为1时与 相异或,所以与16bit的CRC寄存器对应的生成多项式的十六进制数可用0x8005表示。

下面给出并行处理8bit数据流的C源程序: unsigned short crc_dsp(unsigned short reg, unsigned char data_crc) //reg为crc寄存器, data_crc为将要处理的8bit数据流 { unsigned short msb; //crc寄存器将移出的最高1bit unsigned short data; unsigned short gx = 0x8005, i = 0; //i为左移次数, gx为生成多项式 data = (unsigned short)data_crc; data = data << 8; reg = reg ^ data; do { msb = reg & 0x8000; reg = reg << 1; if(msb == 0x8000) { reg = reg ^ gx; } i++; } while(i < 8); return (reg); } 以上为处理每一个8bit数据流的子程序,在计算整个数据流的CRC校验码时,我们只需将CRC_reg的初值置为0x0000,求第一个8bit的CRC值,之后,即可将上次求得的CRC值和本次将要处理的8bit数据作为函数实参传递给上述子程序的形参进行处理即可,最终返回的reg值便是我们所想得到的整个数据流的CRC校验值。

展开

crc generator 怎么理解

在别的论坛淘的,稍作修改不敢独享,感谢原创作者,,------------------------------------卫星接收机刷机攻略感谢后面多名网友的批评、指正!特作出如下补充说明:接收机后面是9针com口的山寨机,由于后来的山寨厂家很不规范,后面的com口只是个摆设,并不可以直接用3根导线实现连机,打开机箱,如果在主板上能找到max232芯片,则说明你的com口是真的;如果找不到,仔细观察后面接口位于主板上的标注,可使用ttl小板连机,个别机器在主板上还可以找到第二升级口的焊点,自己焊出几根线也一样可以外加ttl小板来连机;如果你的机器做工很好,里面有2MB的储存器,是老式的机器,铁壳的,里面带有max232芯片的,是可以直接用3根导线连机的,一、仔细观察自己的接收机 1、观察接收机背后的升级口是几根针?或几个孔?9针或9孔的机器不需要任何转换电路(刷机小板)可直接与电脑进行连接;3、4、5、6针的机器需要购买电平转换电路(刷机小板),因为电脑的电平信号与机器的电平信号不同,所以不能直接与之通讯,需要电平转换电路做中间的桥梁,一般有两种一种是“RS232转TTL”、另一种是“USB转TTL”,如果家里有台式电脑,并且后面有COM口(9针串口)的话,推荐购买“RS232转TTL”,这种小板不需要安装驱动,可直接与电脑连接,另一头连接接收机,价格便宜,这种小板采用的芯片一般为MAX232或MAX3232,如果购买的是MAX3232芯片的小板,还需要将小板上的vcc连接到接收机的vcc(+3.3v或+5v)上为小板供电,除此之外还可以将小板上的vcc和gnd用usb线接到电脑usb口的vcc和gnd为小板提供稳定的+5v供电;如果购买的是MAX232芯片,则只能使用usb线取来+5v供电给小板,不可以用接收机上的+3.3v,max232必须采用+5v供电;“USB转TTL”适合笔记本电脑用户,他们没有9针的com口,用usb转ttl还有一个好处就是不必外接供电,usb自带供电给小板,但使用“USB转TTL”小板需要安装pl2303驱动,将usb口变成com口,方可与接收机进行通讯,usb小板所采用的芯片一般为pl2303,以上是最常见的2种电平转换小板,可以在老式的手机数据线里找找有没有“MAX232”“MAX3232”“pl2303”这3个芯片…… 2、观察自己的接收机的主芯片是什么牌子及型号?常见的主芯片品牌有海尔、国芯、华亚等……海尔一般为Hi2023或Hi2023E……国芯一般有GX3001……等,不同的芯片要选择不同的刷机工具,例如海尔的芯片要使用“ABS_Flasher_V1.6”,国芯的芯片要使用“GxDownloaderIII 1.008”(英文界面)或“GxDownloaderIII 2.120”(中文界面)…… 补充:大家如果遇到“Hi2023”的海尔芯片,请看清楚下面一行写的是什么,如果下面一行写着“E0925”或“E09xx”等字样,在读取和烧写时应选择2023E,而不要选择2023!3、观察自己的接收机储存器是多大的?是1MB的还是2MB的?储存器是系统指令的载体,读取和烧写的.bin文件就是存储在此芯片内。

芯片是 MX25L8005M2C 的储存器,是1MB的(类似的还有 EN25F80、EN25T80 、M25P80、SST25LF080、F25L008、AT26DF081、W25P80 等)一般为小正方形共8个引脚(两边各4个);如果芯片是ATMEL AT45DB161B、MX29F200TTC、EN29LV160AB-70TCP 等,它的引脚超过20个(两边各超过10个以上引脚)为2MB。

总体来说,储存器的芯片型号如果包含“80”字样是1M的,如果包含“160”字样则是2M的。

1MB的储存器就要使用1M的工具来读取、写入,2M的储存器就要使用2M的工具,否则盲目读取和烧写,很有可能将你的山机变为砖头,原因是,正版的接收机内部都是采用2M的储存器,工厂里使用的工具也是2M的,咱们所使用的工具实际上是工厂外漏的工具,都是2M的工具,如果是用这样的工具读取你的1M储存器,会读出一个2M的文件,这个文件是将你的储存器连读2遍所得到的,如果修改这个文件,再将其烧写到你的1M的储存器内的话,很有可能会把你的机器给刷死!(如果使用2M工具写入1M存储器,只是写入正确数据包会造成程序混乱,基本上可以使用)二、连接电脑与接收机 1、电脑后面是9针com口,接收机有9针的也有9孔的,如果是9针则针多的那一排最【左】边的是1号针;如果是9孔,则孔多的那一排最【右】边的是1号孔。

连接,可以使用专用的9针串口线来连接,也可以自己找3根导线来连接,方法是:电脑的5针与接收机的5针(孔)相连,电脑的2针与接收机的3针(孔)相连,电脑的3针与接收机的2针(孔)相连。

2、接收机是3、4、5、6针的,需要外接电平转换小板,usb口的不需要额外供电,com口的如果是max232芯片,需要并且只能接usb的+5v供电,com口的如果是max3232芯片除了可以接usb供电外,还可以利用接收机的+3.3v供电,供电范围更宽一些!将转换小板插入电脑的com口或usb口,小板上的接线柱分别用杜邦线或导线连接至接收机,小板的gnd连接收机的gnd,小板的tx(p31)与接收机的rx相连,小板的rx(p30)与接收机的tx相连,如果是usb的小板只连这3根(usb口需要安装pl2303驱动),如...

上一篇:catia软件编程网 catia官网

下一篇:tv远程软件绿色版 tv远程绿色版