




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第C#實現(xiàn)的4種常用數(shù)據(jù)校驗方法小結(CRC校驗,LRC校驗,BCC校驗,累加和校驗)CRC即循環(huán)冗余校驗碼(CyclicRedundancyCheck):是數(shù)據(jù)通信領域中最常用的一種查錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。循環(huán)冗余檢查(CRC)是一種數(shù)據(jù)傳輸檢錯功能,對數(shù)據(jù)進行多項式計算,并將得到的結果附在幀的后面,接收設備也執(zhí)行類似的算法,以保證數(shù)據(jù)傳輸?shù)恼_性和完整性。
CRC算法參數(shù)模型解釋:
NAME:參數(shù)模型名稱。WIDTH:寬度,即CRC比特數(shù)。POLY:生成項的簡寫,以16進制表示。例如:CRC-32即是0x04C11DB7,忽略了最高位的1,即完整的生成項是0x104C11DB7。INIT:這是算法開始時寄存器(crc)的初始化預置值,十六進制表示。REFIN:待測數(shù)據(jù)的每個字節(jié)是否按位反轉,True或False。REFOUT:在計算后之后,異或輸出之前,整個數(shù)據(jù)是否按位反轉,True或False。XOROUT:計算結果與此參數(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é)議校驗碼計算
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++)
{
//多項式除法
//如果該位為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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 豆類倉儲自動化設備研究-洞察闡釋
- 血管內皮生長因子在糖尿病視網(wǎng)膜病變中的表達與意義-洞察闡釋
- 老齡人口與年輕人口的交流與合作-洞察闡釋
- 行星磁場對宜居性的影響-洞察闡釋
- 電子產品生產設備采購計劃
- 商業(yè)綜合體車位購置與品牌入駐管理服務合同范本
- 集裝箱停車庫購置與倉儲物流服務合同范本
- 青島汽車買賣合同與青島汽車租賃合同
- 高科技公司監(jiān)事會年度評估計劃
- 一年級上冊美術作品展示計劃
- 高中教師培訓管理制度
- 2025年安全生產考試題庫:建筑施工安全法律法規(guī)試題庫
- 2025年中國大連市寫字樓市場規(guī)?,F(xiàn)狀及投資規(guī)劃建議報告
- GB 19762-2025離心泵能效限定值及能效等級
- 大數(shù)據(jù)專業(yè)英語教程 課件 Unit 1 B Applications of Big Data
- 五臟排毒課件
- 2024年系統(tǒng)分析師各章節(jié)重要考點及試題及答案
- T-CRACM 0005-2024 非醫(yī)療生殖健康保健機構服務管理規(guī)范
- 2025年太原三模語文試題及答案
- 金融專業(yè)畢業(yè)論文范文
- 大模型在證券行業(yè)合規(guī)的應用
評論
0/150
提交評論