强奸久久久久久久|草草浮力在线影院|手机成人无码av|亚洲精品狼友视频|国产国模精品一区|久久成人中文字幕|超碰在线视屏免费|玖玖欧洲一区二区|欧美精品无码一区|日韩无遮一区二区

首頁(yè) > 資訊 > 經(jīng)驗(yàn) > crc16,何謂數(shù)組的循環(huán)冗余校驗(yàn)CRC16碼

crc16,何謂數(shù)組的循環(huán)冗余校驗(yàn)CRC16碼

來(lái)源:整理 時(shí)間:2023-09-07 02:44:39 編輯:智能門戶 手機(jī)版

本文目錄一覽

1,何謂數(shù)組的循環(huán)冗余校驗(yàn)CRC16碼

這種方式就是每個(gè)數(shù)據(jù)的CRC的結(jié)果和下一個(gè)數(shù)據(jù)進(jìn)行異或后在進(jìn)行CRC計(jì)算,比如1進(jìn)行了CRC計(jì)算得到結(jié)果,結(jié)果在和2進(jìn)行異或后在進(jìn)行CRC計(jì)算,知道第五個(gè)計(jì)算完畢,就生成了2個(gè)字節(jié)的CRC值。 一個(gè)信息碼得到一個(gè)CRC值,如果5個(gè)數(shù)據(jù)就有5個(gè)CRC值了。效驗(yàn)值反而比數(shù)據(jù)大了。
不對(duì),crc16檢驗(yàn)碼只有2個(gè)字節(jié),字節(jié)數(shù)是根據(jù)算法結(jié)算而得,跟信息字節(jié)數(shù)無(wú)關(guān),不能更改。

何謂數(shù)組的循環(huán)冗余校驗(yàn)CRC16碼

2,包含三個(gè)字節(jié)的循環(huán)冗余校驗(yàn)碼CRC16 這句話正確嗎字節(jié)數(shù)

不對(duì),CRC16檢驗(yàn)碼只有2個(gè)字節(jié),字節(jié)數(shù)是根據(jù)算法結(jié)算而得,跟信息字節(jié)數(shù)無(wú)關(guān),不能更改。
循環(huán)冗余校驗(yàn)碼(crc)的基本原理是: 在k位信息碼后再拼接r位的校驗(yàn)碼,整個(gè)編碼長(zhǎng)度為n位,因此,這種編碼又叫(n,k)碼。對(duì)于一個(gè)給定的(n,k)碼,可以證明存在一個(gè)最高次冪為n-k=r的多項(xiàng)式g(x)。根據(jù)g(x)可以生成k位信息的校驗(yàn)碼,而g(x)叫做這個(gè)crc碼的生成多項(xiàng)式。 校驗(yàn)碼的具體生成過(guò)程為:假設(shè)發(fā)送信息用信息多項(xiàng)式c(x)表示,將c(x)左移r位,則可表示成c(x)*2r,這樣c(x)的右邊就會(huì)空出r位,這就是校驗(yàn)碼的位置。通過(guò)c(x)*2r除以生成多項(xiàng)式g(x)得到的余數(shù)就是校驗(yàn)碼。

包含三個(gè)字節(jié)的循環(huán)冗余校驗(yàn)碼CRC16 這句話正確嗎字節(jié)數(shù)

3,請(qǐng)教CRC16校驗(yàn)

CRC查表的快速算法,要得到值,還的需要表的數(shù)據(jù),另外表的生成多項(xiàng)式不同,結(jié)果也可能不同,典型的生成多項(xiàng)式如IBM、CCITT,樓主google一下看看。
它有給256個(gè)16位值的表,和公式:新CRC值xcrc(crc,cp)=crctab[((crc>>8)&0xFF) ^ (cp&0xFF)] ^ (crc<<8) 還說(shuō)cp為發(fā)送的數(shù)據(jù)序列。其它的就沒(méi)了。
CRC校驗(yàn)不同位數(shù)的校驗(yàn),校驗(yàn)多項(xiàng)式不同結(jié)果也不同,除過(guò)查表法,網(wǎng)上也有另一種計(jì)算法,這個(gè)東西都有源碼,建議你看看crc校驗(yàn)原理,自然明白上述程序中變量的意思
是CRC校驗(yàn)不清楚,像這些crc cp都不知道什么什么意思
不知道你是這句代碼沒(méi)看懂,還是CRC校驗(yàn)的概念不清。如果是前者,可以回顧一下C語(yǔ)言基礎(chǔ),后者的話可以百度“CRC校驗(yàn)”,看完你就差不多懂了,其實(shí)就是一種規(guī)則。

請(qǐng)教CRC16校驗(yàn)

4,crc16的校驗(yàn)碼的算法

方法如下:CRC-16碼由兩個(gè)字節(jié)構(gòu)成,在開始時(shí)CRC寄存器的每一位都預(yù)置為1,然后把CRC寄存器與8-bit的數(shù)據(jù)進(jìn)行異或(異或:二進(jìn)制運(yùn)算 相同為0,不同為1;0^0=0;0^1=1;1^0=1;1^1=0), 之后對(duì)CRC寄存器從高到低進(jìn)行移位,在最高位(MSB)的位置補(bǔ)零,而最低位(LSB,移位后已經(jīng)被移出CRC寄存器)如果為1,則把寄存器與預(yù)定義的多項(xiàng)式碼進(jìn)行異或,否則如果LSB為零,則無(wú)需進(jìn)行異或。重復(fù)上述的由高至低的移位8次,第一個(gè)8-bit數(shù)據(jù)處理完畢,用此時(shí)CRC寄存器的值與下一個(gè)8-bit數(shù)據(jù)異或并進(jìn)行如前一個(gè)數(shù)據(jù)似的8次移位。所有的字符處理完成后CRC寄存器內(nèi)的值即為最終的CRC值。
7e 00 05 60 31 32 33 計(jì)算crc16結(jié)果應(yīng)該是:5b3e方法如下:crc-16碼由兩個(gè)字節(jié)構(gòu)成,在開始時(shí)crc寄存器的每一位都預(yù)置為1,然后把crc寄存器與8-bit的數(shù)據(jù)進(jìn)行異或(異或:二進(jìn)制運(yùn)算 相同為0,不同為1;0^0=0;0^1=1;1^0=1;1^1=0), 之后對(duì)crc寄存器從高到低進(jìn)行移位,在最高位(msb)的位置補(bǔ)零,而最低位(lsb,移位后已經(jīng)被移出crc寄存器)如果為1,則把寄存器與預(yù)定義的多項(xiàng)式碼進(jìn)行異或,否則如果lsb為零,則無(wú)需進(jìn)行異或。重復(fù)上述的由高至低的移位8次,第一個(gè)8-bit數(shù)據(jù)處理完畢,用此時(shí)crc寄存器的值與下一個(gè)8-bit數(shù)據(jù)異或并進(jìn)行如前一個(gè)數(shù)據(jù)似的8次移位。所有的字符處理完成后crc寄存器內(nèi)的值即為最終的crc值。1.設(shè)置crc寄存器,并給其賦值ffff(hex)。 2.將數(shù)據(jù)的第一個(gè)8-bit字符與16位crc寄存器的低8位進(jìn)行異或,并把結(jié)果存入crc寄存器。 3.crc寄存器向右移一位,msb補(bǔ)零,移出并檢查lsb。 4.如果lsb為0,重復(fù)第三步;若lsb為1,crc寄存器與多項(xiàng)式碼相異或。 5.重復(fù)第3與第4步直到8次移位全部完成。此時(shí)一個(gè)8-bit數(shù)據(jù)處理完畢。 6.重復(fù)第2至第5步直到所有數(shù)據(jù)全部處理完成。 7.最終crc寄存器的內(nèi)容即為crc值。crc(16位)多項(xiàng)式為 x16+x15+x2+1,其對(duì)應(yīng)校驗(yàn)二進(jìn)制位列為1 1000 0000 0000 0101。

5,CRC16校驗(yàn)是怎么回事

循環(huán)冗余校驗(yàn)碼(CRC)CRC校驗(yàn)采用多項(xiàng)式編碼方法。被處理的數(shù)據(jù)塊可以看作是一個(gè)n階的二進(jìn)制多項(xiàng)式,由 。如一個(gè)8位二進(jìn)制數(shù)10110101可以表示為: 。多項(xiàng)式乘除法運(yùn)算過(guò)程與普通代數(shù)多項(xiàng)式的乘除法相同。多項(xiàng)式的加減法運(yùn)算以2為模,加減時(shí)不進(jìn),錯(cuò)位,和邏輯異或運(yùn)算一致。采用CRC校驗(yàn)時(shí),發(fā)送方和接收方用同一個(gè)生成多項(xiàng)式g(x),并且g(x)的首位和最后一位的系數(shù)必須為1。CRC的處理方法是:發(fā)送方以g(x)去除t(x),得到余數(shù)作為CRC校驗(yàn)碼。校驗(yàn)時(shí),以計(jì)算的校正結(jié)果是否為0為據(jù),判斷數(shù)據(jù)幀是否出錯(cuò)。CRC校驗(yàn)可以100%地檢測(cè)出所有奇數(shù)個(gè)隨機(jī)錯(cuò)誤和長(zhǎng)度小于等于k(k為g(x)的階數(shù))的突發(fā)錯(cuò)誤。所以CRC的生成多項(xiàng)式的階數(shù)越高,那么誤判的概率就越小。CCITT建議:2048 kbit/s的PCM基群設(shè)備采用CRC-4方案,使用的CRC校驗(yàn)碼生成多項(xiàng)式g(x)= 。采用16位CRC校驗(yàn),可以保證在 bit碼元中只含有一位未被檢測(cè)出的錯(cuò)誤 。在IBM的同步數(shù)據(jù)鏈路控制規(guī)程SDLC的幀校驗(yàn)序列FCS中,使用CRC-16,其生成多項(xiàng)式g(x)= ;而在CCITT推薦的高級(jí)數(shù)據(jù)鏈路控制規(guī)程HDLC的幀校驗(yàn)序列FCS中,使用CCITT-16,其生成多項(xiàng)式g(x)= 。CRC-32的生成多項(xiàng)式g(x)= 。CRC-32出錯(cuò)的概率比CRC-16低 倍 。由于CRC-32的可靠性,把CRC-32用于重要數(shù)據(jù)傳輸十分合適,所以在通信、計(jì)算機(jī)等領(lǐng)域運(yùn)用十分廣泛。在一些UART通信控制芯片(如MC6582、Intel8273和Z80-SIO)內(nèi),都采用了CRC校驗(yàn)碼進(jìn)行差錯(cuò)控制;以太網(wǎng)卡芯片、MPEG解碼芯片中,也采用CRC-32進(jìn)行差錯(cuò)控制。二、CRC校驗(yàn)碼的算法分析CRC校驗(yàn)碼的編碼方法是用待發(fā)送的二進(jìn)制數(shù)據(jù)t(x)除以生成多項(xiàng)式g(x),將最后的余數(shù)作為CRC校驗(yàn)碼。其實(shí)現(xiàn)步驟如下:(1) 設(shè)待發(fā)送的數(shù)據(jù)塊是m位的二進(jìn)制多項(xiàng)式t(x),生成多項(xiàng)式為r階的g(x)。在數(shù)據(jù)塊的末尾添加r個(gè)0,數(shù)據(jù)塊的長(zhǎng)度增加到m+r位,對(duì)應(yīng)的二進(jìn)制多項(xiàng)式為 。(2) 用生成多項(xiàng)式g(x)去除 ,求得余數(shù)為階數(shù)為r-1的二進(jìn)制多項(xiàng)式y(tǒng)(x)。此二進(jìn)制多項(xiàng)式y(tǒng)(x)就是t(x)經(jīng)過(guò)生成多項(xiàng)式g(x)編碼的CRC校驗(yàn)碼。(3) 用 以模2的方式減去y(x),得到二進(jìn)制多項(xiàng)式 。 就是包含了CRC校驗(yàn)碼的待發(fā)送字符串。從CRC的編碼規(guī)則可以看出,CRC編碼實(shí)際上是將代發(fā)送的m位二進(jìn)制多項(xiàng)式t(x)轉(zhuǎn)換成了可以被g(x)除盡的m+r位二進(jìn)制多項(xiàng)式 ,所以解碼時(shí)可以用接受到的數(shù)據(jù)去除g(x),如果余數(shù)位零,則表示傳輸過(guò)程沒(méi)有錯(cuò)誤;如果余數(shù)不為零,則在傳輸過(guò)程中肯定存在錯(cuò)誤。許多CRC的硬件解碼電路就是按這種方式進(jìn)行檢錯(cuò)的。同時(shí) 可以看做是由t(x)和CRC校驗(yàn)碼的組合,所以解碼時(shí)將接收到的二進(jìn)制數(shù)據(jù)去掉尾部的r位數(shù)據(jù),得到的就是原始數(shù)據(jù)。

6,crc 16位 計(jì)算出來(lái)的是不是8個(gè)16進(jìn)制的數(shù) 啊一般情況下

CRC16計(jì)算出來(lái)的結(jié)果是16Bit,1個(gè)16進(jìn)制數(shù)據(jù)占4bit,所以總共應(yīng)該是4個(gè)16進(jìn)制數(shù),比如0x1234
你理解錯(cuò)了。crc 基本定義:設(shè)【要傳送的信息】中,【原文字段】為k位,【校驗(yàn)字段】為r位,那么要傳送的信息一共長(zhǎng)度為 n=k+r 位。設(shè)要發(fā)送的信息為 v(x),原文為 m(x),校驗(yàn)字段為 r(x),那么:v(x) = x^r m(x) + r(x) = g(x)m(x) 容易知道,就是原文的二進(jìn)制形式。r(x) 的計(jì)算方式:設(shè)有一個(gè)r次多項(xiàng)式g(x),也即是生成函數(shù),和 m(x)進(jìn)行重復(fù)異或操作,最終得到一個(gè)r次多項(xiàng)式,就是 r(x)。 ------------------------------------------------------------------------------------------------------下面來(lái)看你的問(wèn)題:根據(jù)你的描述,可以知道以下事實(shí):1)原文 m(x) :即數(shù)組 buf[1]~buf[16],一共 16 個(gè)字節(jié),16*8 = 128 位。2)校驗(yàn)碼 r(x):即數(shù)組 buf[17]~buf[18],一共 2 個(gè)字節(jié),2*8 = 16 位。3)生成函數(shù) g(x):x16 + x15 + x2 + 1,這里 r=16,也即 g(x) 是 16次多項(xiàng)式。4)題目中的描述:buf[17]=buf[1]~buf[16] crc code (calculation:x16 + x15 + x2 + 1)high bytebuf[18]=buf[1]~buf[16] crc code (calculation:x16 + x15 + x2 + 1)low byte描述的是根據(jù) g(x),計(jì)算 r(x) 的算法。具體的說(shuō),是根據(jù): 原文 :buf[1]~buf[16], 以及生成函數(shù): x16 + x15 + x2 + 1, 得到校驗(yàn)碼:buf[17]~buf[18]。計(jì)算 r(x) 算法為: 已知 buf[1]~buf[16] 一共 8 個(gè)字節(jié),設(shè)一個(gè) 128 位組成的序列為: m(x) = f128 * x128 + f127 * x127 + ... + f3 * x3 + f2 * x2 + f1 其中系數(shù) f127 ~ f1 取值只能為 0 或者 1,具體是值由 buf[1]~buf[16] 的相應(yīng)位決定。比如: f127 就是 buf[1] 的最高位,f1 就是 buf[16] 的最低位。 已知g(x):x16 + x15 + x2 + 1 ,用 g(x) 和 m(x) 異或,得到一個(gè)結(jié)果 t(x)。如果 t(x) 是大于 16 次的多項(xiàng)式(也就是 t(x) 的最高位大于 x16 ),那么繼續(xù)用 g(x) 和 t(x) 異或,得到新的 t(x)。直到 t(x) 是一個(gè)小于 16 次的多項(xiàng)式為止。這個(gè) t(x) 就是要求的 r(x)。
文章TAG:crc16何謂數(shù)組的循環(huán)冗余校驗(yàn)CRC16碼

最近更新

相關(guān)文章

經(jīng)驗(yàn)文章排行榜