




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、标准CRC生成多项式如下表: 名称 生成多项式 简记式* 标准引用 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、 生成多项式的最高位固定的1,故在简记式中忽略最高位1了,如0x1021实际是0x11021。I、基本算法(人工笔算): 以CRC16-CCITT为例进行说明,CRC校验码为16位,生成多项式17位。假如数据流为4字节:BYTE3、BYTE2、BYTE1、BYTE0;数据流左移16位,相当于扩大2
8、56×256倍,再除以生成多项式0x11021,做不借位的除法运算(相当于按位异或),所得的余数就是CRC校验码。发送时的数据流为6字节:BYTE3、BYTE2、BYTE1、BYTE0、CRC1、CRC0;II、计算机算法1(比特型算法): 1)将扩大后的数据流(6字节)高16位(BYTE3、BYTE2)放入一个长度为16的寄存器; 2)如果寄存器的首位为1,将寄存器左移1位(寄存器的最低位从下一个字节获得),再与生成多项式的简记式异或; 否则仅将寄存器左移1位(寄存器的最低位从下一个字节获得); 3)重复第2步
9、,直到数据流(6字节)全部移入寄存器; 4)寄存器中的值则为CRC校验码CRC1、CRC0。III、计算机算法2(字节型算法):256n表示256的n次方 把按字节排列的数据流表示成数学多项式,设数据流为BYTEnBYTEn1BYTEn2、BYTE1BYTE0,表示成数学表达式为BYTEn×256n+BYTEn-1×256(n-1)+.+BYTE1*256+BYTE0,在这里+表示为异或运算。设生成多项式为G17(17bit),CRC码为CRC16。 则,CRC16(BYTEn×2
10、56n+BYTEn-1×256(n-1)+.+BYTE1×256+BYTE0)×2562/G17,即数据流左移16位,再除以生成多项式G17。 先变换BYTEn-1、BYTEn-1扩大后的形式, 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 这样就推导出,BYTEn-1字节的CRC校验码为YHLn×256/G17+(YH8n+BYTEn-1)×2562/G17,即上一字节CRC校验码Yn的高8位(YH8n)与本字节BYTEn-1异或,该结果单独计算CRC校验码(即单字节的16位CRC校验码,对单字节可建立表格,预先生成对应的16位CRC校验码),所得的CRC校验码与上一字节CRC校验码Yn的低8位(YL8n)乘以256(即左移8位)异或。然后依次逐个字节求出CRC,直到BYTE0。&
14、#160; 字节型算法的一般描述为:本字节的CRC码,等于上一字节CRC码的低8位左移8位,与上一字节CRC右移8位同本字节异或后所得的CRC码异或。 字节型算法如下: 1)CRC寄存器组初始化为全"0"(0x0000)。(注意:CRC寄存器组初始化全为1时,最后CRC应取反。) 2)CRC寄存器组向左移8位,并保存到CRC寄存器组。 3)原CRC寄存器组高8位(右移8位
15、)与数据字节进行异或运算,得出一个指向值表的索引。 4)索引所指的表值与CRC寄存器组做异或运算。 5)数据指针加1,如果数据没有全部处理完,则重复步骤2)。 6)得出CRC。unsigned short GetCrc_16(unsigned char * pData, int nLength)/函数功能:计算数据流* pData的16位CRC校验码,数据流长度为nLength unsigned short cRc_16 = 0x0000;
16、 / 初始化 while(nLength>0) cRc_16 = (cRc_16 << 8) cRctable_16(cRc_16>>8) *pData) & 0xff; /cRctable_16表由函数mK_cRctable生成 nLength-;
17、0; pData+; return cRc_16; void mK_cRctable(unsigned short gEnpoly)/函数功能:生成0255对应的16CRC校验码,其实就是计算机算法1(比特型算法)/gEnpoly为生成多项式/注意,低位先传送时,生成多项式应反转(低位与高位互换)。如CRC16-CCITT为0x1021,反转后为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; /反转时cRc_16&0x0001 cRc_16=(cRc_16<<=1)gEnpoly; /反转时cRc_16=(cRc_16>>=1)gEnpoly else
20、 cRc_16<<=1; /反转时cRc_16>>=1 cRctable_16k = cRc_16; 这几天研究了一下CRC算法,碰到了一些问
21、题,研究了一下,小有心得。 CRC算法是在通讯领域广泛采用的校验算法。原理我就不说了,这里说一下简单的程序实现。以下均采用CRC多项式为0x1021即:g(x) = x16+x12+x5+x0;CRC的基本原理就不说了,那个搜一下就有了。 最基本的算法应该是按位计算了,这个方法可以适用于所有长度的数据校验,最为灵活,但由于是按位计算,其效率并不是最优,只适用于对速度不敏感的场合。基本的算法如下: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;以是方法可以计算出任意长度数据的校验。但速度慢。下面介绍一种按字节计算的方法:按字节校验是每次计算8位数据,多是基于查表的算法,首先要准备一个表,一共256项。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位二进制数的形式暂存CRC的高8位 */ crc<<=8; /* 左移8位,相当于CRC的低8位乘以 */ crc=crc_tada*ptr; /* 高8位和当前字节相加后再查表求CRC ,再加上以前的CRC */ &
37、#160; ptr+; return(crc);以上算法实现了按字节进行计算校验值。在使用的时候,把计算出来的校验值放在最后两个字节里,将其发送出去,接收端对所有的数据进行相同的校验,如校验值为0我们则认为其数据没有出错。这个是按高位到低位的发送顺序时使用的校验方法。在实际应用中,还有一种按低位到高位的发送方法,这样 ,就要进行反相的校验,但如果把数据反相,显然加大计算量,故可以使用相应的查表算法来进行计算。只是计算方法与表不太一样,其实现算法如下: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; / 取反检验的时候,只要用以下方法就可以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则数据无误,否则数据错误。其表的生成方法也比较简单,对于前一种查表方法,其生成表的算法可以由按位生成算法来计算得到,对0255的字节进行CRC校验
51、,得到的校验值分别做为表的相应项。对于后一种查表方法,其码表可以由以下方法计算得到,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算法算是有一个新的认识了,至少是分清了对于同一个多项式,为什么会有不同的计算方法。弄清后,就会明白在
58、什么场合用什么样的算法。#6 生成crc32贴子回复于: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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025校园活动场地租赁合同示例
- 2025装修公司劳动合同范本
- 2025中文租赁合同范本
- 小儿颈交感神经麻痹综合征的临床护理
- 肿瘤性心包炎的健康宣教
- 呕吐的临床护理
- 2025年天津市房屋租赁代理合同范本
- 2025雇佣家庭保姆合同样本
- 2025年注册消防工程师之消防安全技术实务模考预测题库(夺冠系列)
- 第Ⅱ-Ⅲ型脊髓血管畸形的临床护理
- 电工电子学知到智慧树章节测试课后答案2024年秋湖南大学
- 国开数据库运维网考复习题及答案
- 【MOOC】能源与气候变化应对法-西南政法大学 中国大学慕课MOOC答案
- 《出口单证实务》课件
- 人工智能原理与方法(哈尔滨工程大学)知到智慧树章节答案
- 北京工业大学《环境微生物学》2022-2023学年第一学期期末试卷
- 2024年高考真题-政治(福建卷) 含解析
- DB36T+757-2024香料用樟树培育技术规程
- 酒店服务员合作协议书范文模板
- 血液透析室工作手册目录
- 借名存款合同模板
评论
0/150
提交评论