C#實(shí)現(xiàn)的4種常用數(shù)據(jù)校驗(yàn)方法小結(jié)(CRC校驗(yàn),LRC校驗(yàn),BCC校驗(yàn),累加和校驗(yàn))_第1頁
C#實(shí)現(xiàn)的4種常用數(shù)據(jù)校驗(yàn)方法小結(jié)(CRC校驗(yàn),LRC校驗(yàn),BCC校驗(yàn),累加和校驗(yàn))_第2頁
C#實(shí)現(xiàn)的4種常用數(shù)據(jù)校驗(yàn)方法小結(jié)(CRC校驗(yàn),LRC校驗(yàn),BCC校驗(yàn),累加和校驗(yàn))_第3頁
C#實(shí)現(xiàn)的4種常用數(shù)據(jù)校驗(yàn)方法小結(jié)(CRC校驗(yàn),LRC校驗(yàn),BCC校驗(yàn),累加和校驗(yàn))_第4頁
C#實(shí)現(xiàn)的4種常用數(shù)據(jù)校驗(yàn)方法小結(jié)(CRC校驗(yàn),LRC校驗(yàn),BCC校驗(yàn),累加和校驗(yàn))_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第C#實(shí)現(xiàn)的4種常用數(shù)據(jù)校驗(yàn)方法小結(jié)(CRC校驗(yàn),LRC校驗(yàn),BCC校驗(yàn),累加和校驗(yàn))CRC即循環(huán)冗余校驗(yàn)碼(CyclicRedundancyCheck):是數(shù)據(jù)通信領(lǐng)域中最常用的一種查錯校驗(yàn)碼,其特征是信息字段和校驗(yàn)字段的長度可以任意選定。循環(huán)冗余檢查(CRC)是一種數(shù)據(jù)傳輸檢錯功能,對數(shù)據(jù)進(jìn)行多項(xiàng)式計(jì)算,并將得到的結(jié)果附在幀的后面,接收設(shè)備也執(zhí)行類似的算法,以保證數(shù)據(jù)傳輸?shù)恼_性和完整性。

CRC算法參數(shù)模型解釋:

NAME:參數(shù)模型名稱。WIDTH:寬度,即CRC比特?cái)?shù)。POLY:生成項(xiàng)的簡寫,以16進(jìn)制表示。例如:CRC-32即是0x04C11DB7,忽略了最高位的1,即完整的生成項(xiàng)是0x104C11DB7。INIT:這是算法開始時寄存器(crc)的初始化預(yù)置值,十六進(jìn)制表示。REFIN:待測數(shù)據(jù)的每個字節(jié)是否按位反轉(zhuǎn),True或False。REFOUT:在計(jì)算后之后,異或輸出之前,整個數(shù)據(jù)是否按位反轉(zhuǎn),True或False。XOROUT:計(jì)算結(jié)果與此參數(shù)異或后得到最終的CRC值。

///**********************************************************************

///Name:CRC-4/ITU

x4+x+1

///Poly:0x03

///Init:0x00

///Refin:true

///Refout:true

///Xorout:0x00

///*************************************************************************

publicstaticbyte[]Crc1(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

bytecrc=0;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc1)0)

crc=(byte)((crc1)^0x0C);//0x0C=(reverse0x03)(8-4)

else

crc=(byte)(crc1);

}

}

returnnewbyte[]{crc};

}

///**********************************************************************

///Name:CRC-5/EPC

x5+x3+1

///Poly:0x09

///Init:0x09

///Refin:false

///Refout:false

///Xorout:0x00

///*************************************************************************

publicstaticbyte[]Crc2(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

bytecrc=0x48;//Initialvalue:0x48=0x09(8-5)

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc0x80)0)

crc=(byte)((crc1)^0x48);//0x48=0x09(8-5)

else

crc=(byte)(crc1);

}

}

returnnewbyte[]{(byte)(crc3)};

}

///**********************************************************************

///Name:CRC-5/ITU

x5+x4+x2+1

///Poly:0x15

///Init:0x00

///Refin:true

///Refout:true

///Xorout:0x00

///*************************************************************************

publicstaticbyte[]Crc3(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

bytecrc=0;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc1)0)

crc=(byte)((crc1)^0x15);//0x15=(reverse0x15)(8-5)

else

crc=(byte)(crc1);

}

}

returnnewbyte[]{crc

};

}

///**********************************************************************

///Name:CRC-5/USB

x5+x2+1

///Poly:0x05

///Init:0x1F

///Refin:true

///Refout:true

///Xorout:0x1F

///*************************************************************************

publicstaticbyte[]Crc4(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

bytecrc=0x1F;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc1)0)

crc=(byte)((crc1)^0x14);//0x14=(reverse0x05)(8-5)

else

crc=(byte)(crc1);

}

}

returnnewbyte[]{(byte)(crc^0x1F)

};

}

///**********************************************************************

///Name:CRC-6/ITU

x6+x+1

///Poly:0x03

///Init:0x00

///Refin:true

///Refout:true

///Xorout:0x00

///*************************************************************************

publicstaticbyte[]Crc5(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

bytecrc=0;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc1)0)

crc=(byte)((crc1)^0x30);//0x30=(reverse0x03)(8-6)

else

crc=(byte)(crc1);

}

}

returnnewbyte[]{crc

};

}

///**********************************************************************

///Name:CRC-7/MMC

x7+x3+1

///Poly:0x09

///Init:0x00

///Refin:false

///Refout:false

///Xorout:0x00

///*************************************************************************

publicstaticbyte[]Crc6(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

bytecrc=0;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc0x80)0)

crc=(byte)((crc1)^0x12);//0x12=0x09(8-7)

else

crc=(byte)(crc1);

}

}

returnnewbyte[]{(byte)(crc1)

};

}

///**********************************************************************

///Name:CRC8

x8+x2+x+1

///Poly:0x07

///Init:0x00

///Refin:false

///Refout:false

///Xorout:0x00

///*************************************************************************

publicstaticbyte[]Crc7(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

bytecrc=0;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc0x80)0)

crc=(byte)((crc1)^0x07);

else

crc=(byte)(crc1);

}

}

returnnewbyte[]{crc

};

}

///**********************************************************************

///Name:CRC-8/ITU

x8+x2+x+1

///Poly:0x07

///Init:0x00

///Refin:false

///Refout:false

///Xorout:0x55

///*************************************************************************

publicstaticbyte[]Crc8(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

bytecrc=0;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc0x80)0)

crc=(byte)((crc1)^0x07);

else

crc=(byte)(crc1);

}

}

returnnewbyte[]{(byte)(crc^0x55)

};

}

///**********************************************************************

///Name:CRC-8/MAXIM

x8+x5+x4+1

///Poly:0x31

///Init:0x00

///Refin:true

///Refout:true

///Xorout:0x00

///*************************************************************************

publicstaticbyte[]Crc9(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

bytecrc=0;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc1)0)

crc=(byte)((crc1)^0x8C);//0x8C=reverse0x31

else

crc=(byte)(crc1);

}

}

returnnewbyte[]{crc

};

}

///**********************************************************************

///Name:CRC-8/ROHC

x8+x2+x+1

///Poly:0x07

///Init:0xFF

///Refin:true

///Refout:true

///Xorout:0x00

///*************************************************************************

publicstaticbyte[]Crc10(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

bytecrc=0xFF;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc1)0)

crc=(byte)((crc1)^0xE0);//0xE0=reverse0x07

else

crc=(byte)(crc1);

}

}

returnnewbyte[]{crc

};

}

///Z1協(xié)議校驗(yàn)碼計(jì)算

staticbyte[]table={0x00,0x1C,0x38,0x24,0x70,0x6C,0x48,0x54,0xE0,0xFC,

0xD8,0xC4,0x90,0x8C,0xA8,0xB4,0xDC,0xC0,0xE4,0xF8,

0xAC,0xB0,0x94,0x88,0x3C,0x20,0x04,0x18,0x4C,0x50,

0x74,0x68,0xA4,0xB8,0x9C,0x80,0xD4,0xC8,0xEC,0xF0,

0x44,0x58,0x7C,0x60,0x34,0x28,0x0C,0x10,0x78,0x64,

0x40,0x5C,0x08,0x14,0x30,0x2C,0x98,0x84,0xA0,0xBC,

0xE8,0xF4,0xD0,0xCC,0x54,0x48,0x6C,0x70,0x24,0x38,

0x1C,0x00,0xB4,0xA8,0x8C,0x90,0xC4,0xD8,0xFC,0xE0,

0x88,0x94,0xB0,0xAC,0xF8,0xE4,0xC0,0xDC,0x68,0x74,

0x50,0x4C,0x18,0x04,0x20,0x3C,0xF0,0xEC,0xC8,0xD4,

0x80,0x9C,0xB8,0xA4,0x10,0x0C,0x28,0x34,0x60,0x7C,

0x58,0x44,0x2C,0x30,0x14,0x08,0x5C,0x40,0x64,0x78,

0xCC,0xD0,0xF4,0xE8,0xBC,0xA0,0x84,0x98,0xA8,0xB4,

0x90,0x8C,0xD8,0xC4,0xE0,0xFC,0x48,0x54,0x70,0x6C,

0x38,0x24,0x00,0x1C,0x74,0x68,0x4C,0x50,0x04,0x18,

0x3C,0x20,0x94,0x88,0xAC,0xB0,0xE4,0xF8,0xDC,0xC0,

0x0C,0x10,0x34,0x28,0x7C,0x60,0x44,0x58,0xEC,0xF0,

0xD4,0xC8,0x9C,0x80,0xA4,0xB8,0xD0,0xCC,0xE8,0xF4,

0xA0,0xBC,0x98,0x84,0x30,0x2C,0x08,0x14,0x40,0x5C,

0x78,0x64,0xFC,0xE0,0xC4,0xD8,0x8C,0x90,0xB4,0xA8,

0x1C,0x00,0x24,0x38,0x6C,0x70,0x54,0x48,0x20,0x3C,

0x18,0x04,0x50,0x4C,0x68,0x74,0xC0,0xDC,0xF8,0xE4,

0xB0,0xAC,0x88,0x94,0x58,0x44,0x60,0x7C,0x28,0x34,

0x10,0x0C,0xB8,0xA4,0x80,0x9C,0xC8,0xD4,0xF0,0xEC,

0x84,0x98,0xBC,0xA0,0xF4,0xE8,0xCC,0xD0,0x64,0x78,

0x5C,0x40,0x14,0x08,0x2C,0x30

};

publicstaticbyte[]Crc11(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

inti;

bytecrc=0x00;

inttableIndex;

for(i=start;ilength;i++)

{

tableIndex=crc^(buffer[i]0xFF);

crc=table[tableIndex];

}

returnnewbyte[]{crc};

}

///**********************************************************************

///Name:CRC-12

x16+x12+x5+1

///Poly:0x80

///Init:0x0000

///Refin:true

///Refout:true

///Xorout:0x0000

///*************************************************************************

publicstaticbyte[]Crc12(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

ushortcrc=0;//Initialvalue

shortiQ=0,iR=0;

for(inti=start;ilength;i++)

{

//多項(xiàng)式除法

//如果該位為1

if((buffer[i](0x80iR))0)

{

//則在余數(shù)尾部添1否則添0

crc|=0x01;

}

//如果12位除數(shù)中的最高位為1,則夠除

if(crc=0x1000)

{

crc^=0x180D;

}

crc=1;

iR++;

if(8==iR)

{

iR=0;

iQ++;

}

}

//對后面添加的12個0做處理

for(inti=0;ii++)

{

if(crc=0x1000)

{

crc^=0x180D;

}

crc=1;

}

crc=1;

byte[]ret=BitConverter.GetBytes(crc);

Array.Reverse(ret);

returnret;

}

///**********************************************************************

///Name:CRC-16/CCITT

x16+x12+x5+1

///Poly:0x1021

///Init:0x0000

///Refin:true

///Refout:true

///Xorout:0x0000

///*************************************************************************

publicstaticbyte[]Crc13(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

ushortcrc=0;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc1)0)

crc=(ushort)((crc1)^0x8408);//0x8408=reverse0x1021

else

crc=(ushort)(crc1);

}

}

byte[]ret=BitConverter.GetBytes(crc);

Array.Reverse(ret);

returnret;

}

///**********************************************************************

///Name:CRC-16/CCITTFALSE

x16+x12+x5+1

///Poly:0x1021

///Init:0xFFFF

///Refin:false

///Refout:false

///Xorout:0x0000

///*************************************************************************

publicstaticbyte[]Crc14(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

ushortcrc=0xFFFF;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=(ushort)(buffer[i]8);

for(intj=0;jj++)

{

if((crc0x8000)0)

crc=(ushort)((crc1)^0x1021);

else

crc=(ushort)(crc1);

}

}

byte[]ret=BitConverter.GetBytes(crc);

Array.Reverse(ret);

returnret;

}

///**********************************************************************

///Name:CRC-16/DNP

x16+x13+x12+x11+x10+x8+x6+x5+x2+1

///Poly:0x3D65

///Init:0x0000

///Refin:true

///Refout:true

///Xorout:0xFFFF

///*************************************************************************

publicstaticbyte[]Crc15(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

ushortcrc=0;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc1)0)

crc=(ushort)((crc1)^0xA6BC);//0xA6BC=reverse0x3D65

else

crc=(ushort)(crc1);

}

}

byte[]ret=BitConverter.GetBytes((ushort)~crc);

Array.Reverse(ret);

returnret;

}

///**********************************************************************

///Name:CRC-16/IBM

x16+x15+x2+1

///Poly:0x8005

///Init:0x0000

///Refin:true

///Refout:true

///Xorout:0x0000

///*************************************************************************

publicstaticbyte[]Crc16(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

ushortcrc=0;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc1)0)

crc=(ushort)((crc1)^0xA001);//0xA001=reverse0x8005

else

crc=(ushort)(crc1);

}

}

byte[]ret=BitConverter.GetBytes(crc);

Array.Reverse(ret);

returnret;

}

///**********************************************************************

///Name:CRC-16/MAXIM

x16+x15+x2+1

///Poly:0x8005

///Init:0x0000

///Refin:true

///Refout:true

///Xorout:0xFFFF

///*************************************************************************

publicstaticbyte[]Crc17(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

ushortcrc=0;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc1)0)

crc=(ushort)((crc1)^0xA001);//0xA001=reverse0x8005

else

crc=(ushort)(crc1);

}

}

byte[]ret=BitConverter.GetBytes((ushort)~crc);

Array.Reverse(ret);

returnret;

}

///**********************************************************************

///Name:CRC-16/MODBUS

x16+x15+x2+1

///Poly:0x8005

///Init:0xFFFF

///Refin:true

///Refout:true

///Xorout:0x0000

///*************************************************************************

publicstaticbyte[]Crc18(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

ushortcrc=0xFFFF;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc1)0)

crc=(ushort)((crc1)^0xA001);//0xA001=reverse0x8005

else

crc=(ushort)(crc1);

}

}

byte[]ret=BitConverter.GetBytes(crc);

Array.Reverse(ret);

returnret;

}

///**********************************************************************

///Name:CRC-16/USB

x16+x15+x2+1

///Poly:0x8005

///Init:0xFFFF

///Refin:true

///Refout:true

///Xorout:0xFFFF

///*************************************************************************

publicstaticbyte[]Crc19(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

ushortcrc=0xFFFF;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc1)0)

crc=(ushort)((crc1)^0xA001);//0xA001=reverse0x8005

else

crc=(ushort)(crc1);

}

}

byte[]ret=BitConverter.GetBytes((ushort)~crc);

Array.Reverse(ret);

returnret;

}

///**********************************************************************

///Name:CRC-16/X25

x16+x12+x5+1

///Poly:0x1021

///Init:0xFFFF

///Refin:true

///Refout:true

///Xorout:0xFFFF

///*************************************************************************

publicstaticbyte[]Crc20(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

ushortcrc=0xFFFF;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=buffer[i];

for(intj=0;jj++)

{

if((crc1)0)

crc=(ushort)((crc1)^0x8408);//0x8408=reverse0x1021

else

crc=(ushort)(crc1);

}

}

byte[]ret=BitConverter.GetBytes((ushort)~crc);

Array.Reverse(ret);

returnret;

}

///**********************************************************************

///Name:CRC-16/XMODEM

x16+x12+x5+1

///Poly:0x1021

///Init:0x0000

///Refin:false

///Refout:false

///Xorout:0x0000

///*************************************************************************

publicstaticbyte[]Crc21(byte[]buffer,intstart=0,intlen=0)

{

if(buffer==null||buffer.Length==0)returnnull;

if(start0)returnnull;

if(len==0)len=buffer.Length-start;

intlength=start+len;

if(lengthbuffer.Length)returnnull;

ushortcrc=0;//Initialvalue

for(inti=start;ilength;i++)

{

crc^=(ushort)(buffer[i]8);

for(intj=0;jj++)

{

if((crc0x8000)0)

crc=(ushort)((crc1)^0x1021);

else

crc=(ushort)(crc1);

}

}

byte[]ret=BitConverter.GetBytes(crc);

Array.Reverse(ret);

returnret;

}

///**********************************************************************

///Name:CRC32

x32+x26+

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論