コード例 #1
0
ファイル: CrcClass.cs プロジェクト: liujf5566/Tool
        /// <summary>
        /// 校验文件路径
        /// </summary>
        /// <param name="_filePath">文件路径</param>
        /// <exception cref="OverflowException">溢出</exception>
        /// <exception cref="FiletoolargeException">文件长度大于int32</exception>
        /// <returns></returns>
        public static uint GetFileCRC(string _filePath)
        {
            int   bufferLength = 2048;
            CRC32 crc32        = new CRC32();
            long  readedLegth  = 0;
            uint  result       = 0;

            using (FileStream file = new FileStream(_filePath, FileMode.Open, FileAccess.Read))
            {
                if (file.Length > long.MaxValue)
                {
                    throw (new FiletoolargeException("文件长度大于int64"));
                }
                else
                {
                    uint state = 0xffffffff;

                    checked
                    {
                        while (readedLegth < file.Length)
                        {
                            if ((readedLegth + bufferLength) >= file.Length)
                            {
                                byte[] buffer = new byte[file.Length - readedLegth];
                                file.Read(buffer, 0, buffer.Length);
                                result       = crc32.ByteCRC(buffer, ref state);
                                readedLegth += (file.Length - readedLegth);
                                file.Seek(readedLegth, SeekOrigin.Begin);
                            }
                            else
                            {
                                byte[] buffer = new byte[bufferLength];
                                file.Read(buffer, 0, bufferLength);
                                result       = crc32.ByteCRC(buffer, ref state);
                                readedLegth += bufferLength;
                                file.Seek(readedLegth, SeekOrigin.Begin);
                            }
                        }
                    }
                }
            }

            return(result);
        }
コード例 #2
0
ファイル: CrcClass.cs プロジェクト: liujf5566/Tool
 /// <summary>
 /// 获取String
 /// </summary>
 /// <exception cref="ArgumentNullException">_string 为null</exception>
 /// <returns></returns>
 public static uint GetStringCRC(string _string)
 {
     if (_string == null)
     {
         throw (new ArgumentNullException("_string", "参数_string 为null"));
     }
     else
     {
         CRC32  crc32  = new CRC32();
         byte[] buffer = Encoding.Default.GetBytes(_string);
         return(crc32.ByteCRC(buffer));
     }
 }
コード例 #3
0
ファイル: CrcClass.cs プロジェクト: liujf5566/Tool
            /// <summary>
            /// 获取String
            /// </summary>
            /// <exception cref="ArgumentNullException">_string 为null</exception>
            /// <returns></returns>
            public static uint GetStringCRC(string _string)
            {

                if (_string == null)
                {
                    throw (new ArgumentNullException("_string", "参数_string 为null"));
                }
                else
                {
                    CRC32 crc32 = new CRC32();
                    byte[] buffer = Encoding.Default.GetBytes(_string);
                    return crc32.ByteCRC(buffer);
                }
            }
コード例 #4
0
ファイル: CrcClass.cs プロジェクト: liujf5566/Tool
            /// <summary>
            /// 校验文件路径
            /// </summary>
            /// <param name="_filePath">文件路径</param>
            /// <exception cref="OverflowException">溢出</exception>
            /// <exception cref="FiletoolargeException">文件长度大于int32</exception>
            /// <returns></returns>
            public static uint GetFileCRC(string _filePath)
            {
                int bufferLength = 2048;
                CRC32 crc32 = new CRC32();
                long readedLegth = 0;
                uint result = 0;
                using (FileStream file = new FileStream(_filePath, FileMode.Open, FileAccess.Read))
                {
                    if (file.Length > long.MaxValue)
                    {
                        throw (new FiletoolargeException("文件长度大于int64"));
                    }
                    else
                    {
                        uint state = 0xffffffff;

                        checked
                        {
                            while (readedLegth < file.Length)
                            {
                                if ((readedLegth + bufferLength) >= file.Length)
                                {
                                    byte[] buffer = new byte[file.Length - readedLegth];
                                    file.Read(buffer, 0, buffer.Length);
                                    result = crc32.ByteCRC(buffer, ref state);
                                    readedLegth += (file.Length - readedLegth);
                                    file.Seek(readedLegth, SeekOrigin.Begin);
                                }
                                else
                                {
                                    byte[] buffer = new byte[bufferLength];
                                    file.Read(buffer, 0, bufferLength);
                                    result = crc32.ByteCRC(buffer, ref state);
                                    readedLegth += bufferLength;
                                    file.Seek(readedLegth, SeekOrigin.Begin);
                                }
                            }
                        }
                    }
                }

                return result;
            }
コード例 #5
0
ファイル: CrcClass.cs プロジェクト: liujf5566/Tool
 /// <summary>
 /// 获取流的CRC校验码 
 /// </summary>
 /// <param name="_buffer"></param>
 /// <returns></returns>
 public static uint GetByteCRC(byte[] _buffer)
 {
     CRC32 crc32 = new CRC32();
     return crc32.ByteCRC(_buffer);
 }
コード例 #6
0
ファイル: CrcClass.cs プロジェクト: liujf5566/Tool
        /// <summary>
        /// 获取流的CRC校验码
        /// </summary>
        /// <param name="_buffer"></param>
        /// <returns></returns>
        public static uint GetByteCRC(byte[] _buffer)
        {
            CRC32 crc32 = new CRC32();

            return(crc32.ByteCRC(_buffer));
        }