




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、標(biāo)準(zhǔn)CRC生成多項(xiàng)式如下表: 名稱 生成多項(xiàng)式 簡記式* 標(biāo)準(zhǔn)引用 CRC-4 x4+x+1 &
2、#160; 3 ITU G.704 CRC-8 x8+x5+x4+1 0x31
3、160; CRC-8 x8+x2+x1+1 0x07
4、60; CRC-8 x8+x6+x4+x3+x2+x1 0x5E CRC-12 x12+x11+x3+x+1 80F CRC-16
5、; x16+x15+x2+1 8005 IBM SDLC CRC16-CCITT x16+x12+x5+1 1021 ISO HDLC, ITU X.25,
6、 V.34/V.41/V.42, PPP-FCS CRC-32 x32+x26+x23+.+x2+x+1 04C11DB7 ZIP, RAR, IEEE 802 LAN/FDDI, IEEE 1394, PPP-FCS CRC-32c x32+x28+x27+.+x8+x6+1 1EDC6F41 SCTP
7、 生成多項(xiàng)式的最高位固定的1,故在簡記式中忽略最高位1了,如0x1021實(shí)際是0x11021。I、基本算法(人工筆算): 以CRC16-CCITT為例進(jìn)行說明,CRC校驗(yàn)碼為16位,生成多項(xiàng)式17位。假如數(shù)據(jù)流為4字節(jié):BYTE3、BYTE2、BYTE1、BYTE0;數(shù)據(jù)流左移16位,相當(dāng)于擴(kuò)大2
8、56×256倍,再除以生成多項(xiàng)式0x11021,做不借位的除法運(yùn)算(相當(dāng)于按位異或),所得的余數(shù)就是CRC校驗(yàn)碼。發(fā)送時的數(shù)據(jù)流為6字節(jié):BYTE3、BYTE2、BYTE1、BYTE0、CRC1、CRC0;II、計(jì)算機(jī)算法1(比特型算法): 1)將擴(kuò)大后的數(shù)據(jù)流(6字節(jié))高16位(BYTE3、BYTE2)放入一個長度為16的寄存器; 2)如果寄存器的首位為1,將寄存器左移1位(寄存器的最低位從下一個字節(jié)獲得),再與生成多項(xiàng)式的簡記式異或; 否則僅將寄存器左移1位(寄存器的最低位從下一個字節(jié)獲得); 3)重復(fù)第2步
9、,直到數(shù)據(jù)流(6字節(jié))全部移入寄存器; 4)寄存器中的值則為CRC校驗(yàn)碼CRC1、CRC0。III、計(jì)算機(jī)算法2(字節(jié)型算法):256n表示256的n次方 把按字節(jié)排列的數(shù)據(jù)流表示成數(shù)學(xué)多項(xiàng)式,設(shè)數(shù)據(jù)流為BYTEnBYTEn1BYTEn2、BYTE1BYTE0,表示成數(shù)學(xué)表達(dá)式為BYTEn×256n+BYTEn-1×256(n-1)+.+BYTE1*256+BYTE0,在這里+表示為異或運(yùn)算。設(shè)生成多項(xiàng)式為G17(17bit),CRC碼為CRC16。 則,CRC16(BYTEn×2
10、56n+BYTEn-1×256(n-1)+.+BYTE1×256+BYTE0)×2562/G17,即數(shù)據(jù)流左移16位,再除以生成多項(xiàng)式G17。 先變換BYTEn-1、BYTEn-1擴(kuò)大后的形式, CRC16BYTEn×256n×2562/G17+BYTEn-1×256(n-1)×2562/G17+.+BYTE1×256×2562/G17+BYTE0×2562/G17
11、 (Zn+Yn/G17)×256n+BYTEn-1×256(n-1)×2562/G17+.+BYTE1×256×2562/G17+BYTE0×2562/G17 Zn×256n+Yn×256/G17+BYTEn-1×2562/G17×256(n-1)+.+BYTE1×256×2562/G17+BYTE0×2562/G17
12、60; Zn×256n+(YH8n×256+YHLn)×256/G17+BYTEn-1×2562/G17×256(n-1)+.+BYTE1×256×2562/G17+BYTE0×2562/G17 Zn×256n+YHLn×256/G17+(YH8n+BYTEn-1)×2562/G17×256(n-1)+.+BY
13、TE1×256×2562/G17+BYTE0×2562/G17 這樣就推導(dǎo)出,BYTEn-1字節(jié)的CRC校驗(yàn)碼為YHLn×256/G17+(YH8n+BYTEn-1)×2562/G17,即上一字節(jié)CRC校驗(yàn)碼Yn的高8位(YH8n)與本字節(jié)BYTEn-1異或,該結(jié)果單獨(dú)計(jì)算CRC校驗(yàn)碼(即單字節(jié)的16位CRC校驗(yàn)碼,對單字節(jié)可建立表格,預(yù)先生成對應(yīng)的16位CRC校驗(yàn)碼),所得的CRC校驗(yàn)碼與上一字節(jié)CRC校驗(yàn)碼Yn的低8位(YL8n)乘以256(即左移8位)異或。然后依次逐個字節(jié)求出CRC,直到BYTE0。&
14、#160; 字節(jié)型算法的一般描述為:本字節(jié)的CRC碼,等于上一字節(jié)CRC碼的低8位左移8位,與上一字節(jié)CRC右移8位同本字節(jié)異或后所得的CRC碼異或。 字節(jié)型算法如下: 1)CRC寄存器組初始化為全"0"(0x0000)。(注意:CRC寄存器組初始化全為1時,最后CRC應(yīng)取反。) 2)CRC寄存器組向左移8位,并保存到CRC寄存器組。 3)原CRC寄存器組高8位(右移8位
15、)與數(shù)據(jù)字節(jié)進(jìn)行異或運(yùn)算,得出一個指向值表的索引。 4)索引所指的表值與CRC寄存器組做異或運(yùn)算。 5)數(shù)據(jù)指針加1,如果數(shù)據(jù)沒有全部處理完,則重復(fù)步驟2)。 6)得出CRC。unsigned short GetCrc_16(unsigned char * pData, int nLength)/函數(shù)功能:計(jì)算數(shù)據(jù)流* pData的16位CRC校驗(yàn)碼,數(shù)據(jù)流長度為nLength unsigned short cRc_16 = 0x0000;
16、 / 初始化 while(nLength>0) cRc_16 = (cRc_16 << 8) cRctable_16(cRc_16>>8) *pData) & 0xff; /cRctable_16表由函數(shù)mK_cRctable生成 nLength-;
17、0; pData+; return cRc_16; void mK_cRctable(unsigned short gEnpoly)/函數(shù)功能:生成0255對應(yīng)的16CRC校驗(yàn)碼,其實(shí)就是計(jì)算機(jī)算法1(比特型算法)/gEnpoly為生成多項(xiàng)式/注意,低位先傳送時,生成多項(xiàng)式應(yīng)反轉(zhuǎn)(低位與高位互換)。如CRC16-CCITT為0x1021,反轉(zhuǎn)后為0x8408 un
18、signed short cRc_16=0; unsigned short i,j,k; for(i=0,k=0;i<256;i+,k+) cRc_16 = i<<8; for(j=8;j>0;j-) if(cRc_16&0x8000)
19、160; /反轉(zhuǎn)時cRc_16&0x0001 cRc_16=(cRc_16<<=1)gEnpoly; /反轉(zhuǎn)時cRc_16=(cRc_16>>=1)gEnpoly else
20、 cRc_16<<=1; /反轉(zhuǎn)時cRc_16>>=1 cRctable_16k = cRc_16; 這幾天研究了一下CRC算法,碰到了一些問
21、題,研究了一下,小有心得。 CRC算法是在通訊領(lǐng)域廣泛采用的校驗(yàn)算法。原理我就不說了,這里說一下簡單的程序?qū)崿F(xiàn)。以下均采用CRC多項(xiàng)式為0x1021即:g(x) = x16+x12+x5+x0;CRC的基本原理就不說了,那個搜一下就有了。 最基本的算法應(yīng)該是按位計(jì)算了,這個方法可以適用于所有長度的數(shù)據(jù)校驗(yàn),最為靈活,但由于是按位計(jì)算,其效率并不是最優(yōu),只適用于對速度不敏感的場合。基本的算法如下:unsigned short do_crc_16(unsigned char
22、*message, unsigned int len) int i, j; unsigned short crc_reg = 0; unsigned short current; for (i = 0; i < len; i+) current = me
23、ssagei << 8; for (j = 0; j < 8; j+) if (short)(crc_reg current) < 0)
24、60; crc_reg = (crc_reg << 1) 0x1021; else crc_reg <<= 1;
25、0; current <<= 1; return crc_reg;以是方法可以計(jì)算出任意長度數(shù)據(jù)的校驗(yàn)。但速度慢。下面介紹一種按字節(jié)計(jì)算的方法:按字節(jié)校驗(yàn)是每次計(jì)算8位數(shù)據(jù),多是基于查表的算法,首先要準(zhǔn)備一個表,一共256項(xiàng)。unsigned int crc_ta256=
26、; /* CRC余式表 */ 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252,
27、 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 0x3
28、653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0
29、xb92b, 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddc
30、d, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 0
31、x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c,
32、 0xc50d, 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe
33、92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
34、 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed
35、1, 0x1ef0 ;unsigned short do_crc_table(unsigned char *ptr,int len) unsigned short int crc; unsigned char da; crc=0; while(len-!=0) da=(unsigned short)crc>>8; /
36、* 以8位二進(jìn)制數(shù)的形式暫存CRC的高8位 */ crc<<=8; /* 左移8位,相當(dāng)于CRC的低8位乘以 */ crc=crc_tada*ptr; /* 高8位和當(dāng)前字節(jié)相加后再查表求CRC ,再加上以前的CRC */ &
37、#160; ptr+; return(crc);以上算法實(shí)現(xiàn)了按字節(jié)進(jìn)行計(jì)算校驗(yàn)值。在使用的時候,把計(jì)算出來的校驗(yàn)值放在最后兩個字節(jié)里,將其發(fā)送出去,接收端對所有的數(shù)據(jù)進(jìn)行相同的校驗(yàn),如校驗(yàn)值為0我們則認(rèn)為其數(shù)據(jù)沒有出錯。這個是按高位到低位的發(fā)送順序時使用的校驗(yàn)方法。在實(shí)際應(yīng)用中,還有一種按低位到高位的發(fā)送方法,這樣 ,就要進(jìn)行反相的校驗(yàn),但如果把數(shù)據(jù)反相,顯然加大計(jì)算量,故可以使用相應(yīng)的查表算法來進(jìn)行計(jì)算。只是計(jì)算方法與表不太一樣,其實(shí)現(xiàn)算法如下:unsigned short c
38、rc16_ccitt_table256 = 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, 0x9cc9, 0x8d40
39、, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
40、; 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1,
41、0x0528, 0x37b3, 0x263a, 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, 0x7387, 0x62
42、0e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
43、60; 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66
44、, 0x7eef, 0x4c74, 0x5dfd, 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, 0x4a44, 0x
45、5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,&
46、#160; 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78,;unsigned short do_crc_table_1(unsigned char *pData,int
47、 nLength) unsigned short fcs = 0xffff; / 初始化 while(nLength>0) fcs = (fcs >> 8) crc16_ccitt_table(fcs *pData) & 0xff;
48、nLength-; pData+; return fcs; / 取反檢驗(yàn)的時候,只要用以下方法就可以int IsCrc16Good(unsigned char* pData, int nLength) unsigned short fcs = 0xffff; / 初始化
49、 while(nLength>0) fcs = (fcs >> 8) crc16_ccitt_table(fcs *pData) & 0xff; nLength-; pData+; &
50、#160; / return (); / 0xf0b8是CRC-ITU的"Magic Value" if(fcs = 0xf0b8) return 1; else return -1;返回1則數(shù)據(jù)無誤,否則數(shù)據(jù)錯誤。其表的生成方法也比較簡單,對于前一種查表方法,其生成表的算法可以由按位生成算法來計(jì)算得到,對0255的字節(jié)進(jìn)行CRC校驗(yàn)
51、,得到的校驗(yàn)值分別做為表的相應(yīng)項(xiàng)。對于后一種查表方法,其碼表可以由以下方法計(jì)算得到,void crc16_ccitt() unsigned char index = 0; unsigned short to_xor; int i; printf("unsigned short crc16_ccitt_table256 =n"); while (1)
52、 if (!(index % 8) printf("n"); to_xor = index;
53、160; for (i = 0; i < 8; i+) if (to_xor & 0x0001) to_xor = (to_xor >>1) 0x8408;
54、0; else to_xor >>= 1; &
55、#160; printf("0x%04x", to_xor); if (index = 255)
56、; printf("n"); break; else
57、0; printf(", "); index+; printf(""); /return 0;這樣,對CRC算法算是有一個新的認(rèn)識了,至少是分清了對于同一個多項(xiàng)式,為什么會有不同的計(jì)算方法。弄清后,就會明白在
58、什么場合用什么樣的算法。#6 生成crc32貼子回復(fù)于:2007-3-14 21:03:35/* 生成下面的crc32表 unsigned char i,j; unsigned long crc,crc32_table256; for (i = 0; i < 256; i+) &
59、#160; crc = i; for (j = 0; j < 8; j+) if (crc &
60、160;1) crc = (crc >> 1) 0xEDB88320; else
61、60; crc >>= 1; crc32_tablei = crc; */code unsigned long crc32_table256 = 0x00000000L
62、, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, 0x90bf1d91L, 0x1db
63、71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, 0xfa0f3d63L, 0x8d080df5L,
64、;0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L
65、, 0x26d930acL, 0x51de003aL, 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb66
66、62d3dL, 0x76dc4190L, 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L,
67、;0xe6635c01L, 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L
68、, 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L,
69、;0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L, 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, 0x2eb40d81L
70、, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L, 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, 0xe40ecf0bL, 0x930
71、9ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L, 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, 0x67dd4accL, 0xf9b9df6fL,
72、;0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL, 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高頻手術(shù)設(shè)備遠(yuǎn)程監(jiān)控企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力項(xiàng)目商業(yè)計(jì)劃書
- 速凍火鍋制品AI應(yīng)用行業(yè)深度調(diào)研及發(fā)展項(xiàng)目商業(yè)計(jì)劃書
- 國慶ktv活動方案
- 國旗敬禮活動方案
- 國企中秋團(tuán)建活動方案
- 啤酒鴨打包活動方案
- 商場盲盒活動策劃方案
- 團(tuán)委春運(yùn)活動方案
- 回收公司渠道策劃方案
- 品牌宣傳展覽活動方案
- 私募股權(quán)投資基金(雙GP)合作框架協(xié)議書范本
- 顯微根尖手術(shù)治療
- 電網(wǎng)工程設(shè)備材料信息參考價(jià)(2024年第四季度)
- 《水性涂料產(chǎn)品介紹》課件
- 2025年森林防火項(xiàng)目立項(xiàng)申請報(bào)告模板
- 人教版數(shù)學(xué)七年級下冊6.1.3《平方根》聽評課記錄2
- 《危重病人護(hù)理常規(guī)》課件
- 2025年青島市即墨區(qū)衛(wèi)生健康局所屬事業(yè)單位和公立醫(yī)院招考聘用358人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025版國際貿(mào)易大宗商品交易平臺合作合同3篇
- 沙漠治理防塵網(wǎng)安裝協(xié)議
- 2023-2024學(xué)年人教版數(shù)學(xué)八年級下冊期末復(fù)習(xí)試卷(含答案)
評論
0/150
提交評論