亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? crc32.cs

?? TI DM6446 EVM 串口下載程序 使用環(huán)境:windows dos環(huán)境或者linux 使用前需安裝mono
?? CS
字號(hào):
/****************************************************************
 *  TI DVEVM Serial Boot/Flash Host Program - CRC-32 code       *
 *  (C) 2006, Texas Instruments, Inc.                           *
 *                                                              *
 * Author:  Daniel Allred (d-allred@ti.com)                     *
 * History: 09/19/2006 - Version 0.1 - Initial Release          *
 *                                                              *
 ****************************************************************/

using System;
using System.Text;
using System.IO.Ports;
using System.Threading;

namespace DVFlasher
{
    public class CRC32
    {
        #region Data members

        private UInt32[] lut;
        private UInt32 poly = 0x04C11DB7; //Bit32 is 1 is always 1 and therefore not needed
        private UInt32 initReg = 0xFFFFFFFF;
        private UInt32 finalReg = 0xFFFFFFFF;
        private Boolean reflected = true; //follows hardware convention that receive bits in reverse order 
        private Int32 numBytesPerRegShift = 1;

        #endregion

        #region Indexer and Properties
        
        public UInt32 this[int index]
        {
            get{
                return lut[index];
            }
        }
        
        public Int32 Length
        {
            get{
                return lut.Length;
            }
        }
        
        private Int32 NumBytesPerRegShift
        {
            get { return numBytesPerRegShift; }
            set { numBytesPerRegShift = ((value < 3) && (value > 0)) ? value : 1; }
        }
        
        #endregion

        #region Constructors
        /// <summary>
        /// Basic Constructor to generate the standard CRC-32 (used in ethernet packets, Zip files, etc.)
        /// </summary>
        public CRC32()
        {
            poly = 0x04C11DB7; //Bit32 is 1 by default
            initReg = 0xFFFFFFFF;
            finalReg = 0xFFFFFFFF;
            reflected = true; //follows hardware convention that receive bits in reverse order 
            numBytesPerRegShift = 1;
            BuildTable();
        }

        /// <summary>
        /// Basic Constructor except with a different key (divisor) polynomial
        /// </summary>
        /// <param name="KeyPoly">The user-provided key polynomial (hex number of bits[31-0])</param>
        public CRC32(UInt32 KeyPoly)
        {
            poly = KeyPoly;
            BuildTable();
        }

        /// <summary>
        /// Constructor for custom 32-bit CRC object - Don't use this unless you really know
        /// what the heck you are doing.
        /// </summary>
        /// <param name="KeyPoly">Custom key polynomial</param>
        /// <param name="InitialRegVal">Initial register value</param>
        /// <param name="FinalizeXorVal">Value that is xor'd with final CRC</param>
        /// <param name="Reflected">Indicates whether the algorithm expects reflected input bytes</param>
        /// <param name="BytesShiftedPerCycle">How many bytes are handled at a time (1 or 2).
        /// The internal table size is determined by this parameter, 1 is most common (leads to 1kbyte table).</param>
        public CRC32(UInt32 KeyPoly,
            UInt32 InitialRegVal,
            UInt32 FinalizeXorVal,
            Boolean Reflected,
            Int32 BytesShiftedPerCycle)
        {
            poly = KeyPoly;
            initReg = InitialRegVal;
            finalReg = FinalizeXorVal;
            reflected = Reflected;
            NumBytesPerRegShift = BytesShiftedPerCycle;
            BuildTable();
        }
        #endregion

        #region Table building method used by Constructors
        /// <summary>
        /// Function to generate the table of values used in the CRC-32 calculation
        /// </summary>
        private void BuildTable()
        {
            Int32 NumBitsPerRegShift = NumBytesPerRegShift*8;
            Int32 tableLen = (Int32) Math.Pow(2.0,NumBitsPerRegShift);
            UInt32 crcAccum;
            lut = new UInt32[tableLen];

            if (reflected)
            {
                for (UInt32 i = 0; i < tableLen; i++)
                {
                    crcAccum = ReflectNum(i, NumBitsPerRegShift) << (32 - NumBitsPerRegShift);
                    for (Byte j = 0; j < NumBitsPerRegShift; j++)
                    {
                        if ((crcAccum & 0x80000000) != 0x00000000)
                        {
                            crcAccum = (crcAccum << 1) ^ poly;
                        }
                        else
                        {
                            crcAccum = (crcAccum << 1);
                        }
                        lut[i] = ReflectNum(crcAccum, 32);
                    }
                }
            }
            else
            {
                for (UInt32 i = 0; i < tableLen; i++)
                {
                    crcAccum = i << (32 - NumBitsPerRegShift);
                    for (Byte j = 0; j < NumBitsPerRegShift; j++)
                    {
                        if ((crcAccum & 0x80000000) != 0x00000000)
                        {
                            crcAccum = (crcAccum << 1) ^ poly;
                        }
                        else
                        {
                            crcAccum = (crcAccum << 1);
                        }
                        lut[i] = crcAccum;
                    }
                }
            }
        }
        #endregion
                                       
        #region Public Methods
        
        /// <summary>
        /// Calculate the CRC-32 checksum on the given array of bytes
        /// </summary>
        /// <param name="Data">Array of bytes of data.</param>
        /// <returns>The 32-bit CRC of the data.</returns>
        public UInt32 CalculateCRC(Byte[] Data)
        {
            UInt32 crc = initReg;
            Int32 len = Data.Length;
            Int32 NumBitsPerRegShift = NumBytesPerRegShift * 8;
            UInt32 Mask = (UInt32)(Math.Pow(2.0, NumBitsPerRegShift) - 1);

            // Perform the algorithm on each byte
            if (reflected)
            {
                if (NumBytesPerRegShift == 2)
                {
                    for (Int32 i = 0; i < (len / NumBytesPerRegShift); i++)
                    {
                        crc = (crc >> NumBitsPerRegShift) ^ lut[(crc & Mask) ^ ((Data[2 * i + 1] << 8) | Data[2 * i])];
                    }
                }
                else
                {
                    for (Int32 i = 0; i < len; i++)
                    {
                        crc = (crc >> NumBitsPerRegShift) ^ lut[(crc & Mask) ^ Data[i]];
                    }
                }
            }
            else
            {
                if (NumBytesPerRegShift == 2)
                {
                    for (Int32 i = 0; i < (len / NumBytesPerRegShift); i++)
                    {
                        crc = (crc << NumBitsPerRegShift) ^ lut[((crc >> (32 - NumBitsPerRegShift)) & Mask) ^ ((Data[2 * i] << 8) | Data[2 * i + 1])];
                    }
                }
                else
                {
                    for (Int32 i = 0; i < len; i++)
                    {
                        crc = (crc << NumBitsPerRegShift) ^ lut[((crc >> (32 - NumBitsPerRegShift)) & Mask) ^ Data[i]];
                    }
                }
            }
            // Exclusive OR the result with the specified value
            return (crc ^ finalReg);
        }

        /// <summary>
        /// Method to reflect a specified number of bits in the integer
        /// </summary>
        /// <param name="inVal">The unsigned integer value input</param>
        /// <param name="num">The number of lower bits to reflect.</param>
        /// <returns></returns>
        public UInt32 ReflectNum(UInt32 inVal, Int32 num)
        {
            UInt32 outVal = 0x0;

            for (Int32 i = 1; i < (num + 1); i++)
            {
                if ((inVal & 0x1) != 0x0)
                {
                    outVal |= (UInt32)(0x1 << (num - i));
                }
                inVal >>= 1;
            }
            return outVal;
        }
                
        #endregion


    }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人妖av一区二区| 亚洲裸体在线观看| 色激情天天射综合网| 日韩二区在线观看| 欧美国产精品劲爆| 91麻豆精品国产无毒不卡在线观看| 国产资源在线一区| 三级久久三级久久| 中文字幕一区二区三区精华液 | 亚洲国产精品ⅴa在线观看| 欧美无乱码久久久免费午夜一区| 国产精品资源在线| 日本欧美肥老太交大片| 亚洲精品国产精品乱码不99| 国产欧美日韩中文久久| 日韩欧美专区在线| 欧美日韩和欧美的一区二区| 99精品国产热久久91蜜凸| 国产毛片一区二区| 美腿丝袜亚洲色图| 日韩在线一二三区| 亚洲高清在线视频| 一区二区三区精品在线| 国产精品久久久久影院亚瑟| 久久色在线观看| 欧美mv日韩mv国产| 日韩一级片在线播放| 欧美日韩国产另类不卡| 欧美中文字幕一区二区三区亚洲| caoporm超碰国产精品| 国产成人精品亚洲午夜麻豆| 激情小说欧美图片| 久久av老司机精品网站导航| 天天影视网天天综合色在线播放| 一区二区成人在线视频| 亚洲免费观看在线观看| 亚洲欧洲精品天堂一级| 中文字幕在线视频一区| 国产精品青草综合久久久久99| 国产无遮挡一区二区三区毛片日本| 日韩免费一区二区三区在线播放| 91 com成人网| 欧美一区二区三区日韩| 日韩欧美一区二区在线视频| 日韩一区二区精品在线观看| 日韩精品一区二区三区视频播放| 日韩欧美精品在线视频| 精品少妇一区二区三区在线视频| 欧美刺激午夜性久久久久久久 | 日韩免费一区二区| 欧美大片在线观看一区二区| 精品黑人一区二区三区久久| 久久综合久久99| 国产欧美一区二区三区沐欲| 国产精品传媒视频| 夜夜嗨av一区二区三区网页| 亚洲成人三级小说| 蜜桃av一区二区| 国产美女精品一区二区三区| 国产91丝袜在线播放九色| 成人国产电影网| 色噜噜狠狠成人网p站| 欧美美女激情18p| 日韩一区二区三区在线视频| 久久色.com| 亚洲色图制服诱惑| 性做久久久久久久免费看| 男女男精品视频网| 国产69精品久久久久777| 色综合色综合色综合色综合色综合| 欧美视频日韩视频在线观看| 欧美电影精品一区二区| 一区免费观看视频| 五月天一区二区三区| 国产乱人伦偷精品视频免下载| 99精品欧美一区二区蜜桃免费 | 亚洲一本大道在线| 蜜臀av性久久久久蜜臀aⅴ| 国产精品亚洲视频| 91国产视频在线观看| 欧美不卡在线视频| 中文字幕一区二区不卡| 三级在线观看一区二区| 国产不卡视频一区二区三区| 欧美在线看片a免费观看| 欧美岛国在线观看| 亚洲欧美国产三级| 久久99国产精品久久| 色网综合在线观看| 久久免费午夜影院| 亚洲高清一区二区三区| 成人黄色777网| 日韩精品最新网址| 亚洲精品国产第一综合99久久| 蜜芽一区二区三区| 色先锋久久av资源部| 久久精品人人做人人爽97| 亚洲1区2区3区4区| av一区二区三区| 精品久久久久香蕉网| 亚洲国产精品综合小说图片区| 国产精品综合av一区二区国产馆| 欧美日韩亚洲综合一区二区三区| 亚洲国产精华液网站w| 久久草av在线| 欧美男生操女生| 亚洲精品一二三四区| 国产成人综合亚洲91猫咪| 91麻豆精品国产91久久久使用方法| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产精一区二区三区| 欧美性淫爽ww久久久久无| 国产精品污污网站在线观看| 久久www免费人成看片高清| 欧美亚洲日本一区| 亚洲欧洲精品一区二区三区不卡| 国产在线一区观看| 欧美成人精品高清在线播放| 天堂av在线一区| 在线观看亚洲一区| 亚洲欧美中日韩| 丁香激情综合国产| 久久九九全国免费| 韩国av一区二区三区四区| 日韩欧美国产三级电影视频| 午夜日韩在线观看| 欧美色综合久久| 一区二区高清免费观看影视大全| 97成人超碰视| 自拍偷拍国产精品| 91丝袜美女网| 亚洲美女免费在线| 在线日韩av片| 亚洲一区二区三区四区在线免费观看 | 不卡的看片网站| 国产精品毛片久久久久久久| 懂色av噜噜一区二区三区av| 国产三级精品视频| 国产99久久久精品| 中文字幕在线不卡视频| 波多野结衣一区二区三区 | 欧美精品亚洲二区| 日韩中文字幕av电影| 日韩一级高清毛片| 精品一区二区三区在线播放视频 | 亚洲人成影院在线观看| 91视频精品在这里| 亚洲影院久久精品| 欧美精选在线播放| 久久精品久久综合| 2019国产精品| www.成人在线| 一区二区三区欧美日| 欧美日韩成人综合天天影院| 午夜精品福利久久久| 欧美一级二级三级乱码| 久久国产福利国产秒拍| 久久久久一区二区三区四区| 高清av一区二区| 亚洲美女偷拍久久| 这里只有精品电影| 国产一区二区三区日韩| 国产精品午夜久久| 欧洲人成人精品| 日产国产高清一区二区三区| 久久婷婷国产综合国色天香| 91小视频在线免费看| 丝袜脚交一区二区| 久久久久久久久久久黄色| 97se亚洲国产综合自在线| 懂色av中文一区二区三区| 国产精品国产三级国产专播品爱网| 色香蕉久久蜜桃| 麻豆国产欧美日韩综合精品二区| 国产欧美日韩另类一区| 欧美在线观看视频一区二区三区| 日韩av一区二| 国产精品国产三级国产普通话蜜臀 | 婷婷中文字幕综合| 久久色.com| 欧美日韩在线播放三区| 麻豆精品在线播放| 一区在线观看免费| 日韩视频国产视频| av亚洲精华国产精华| 蜜臀av性久久久久蜜臀aⅴ| 中文字幕亚洲视频| 日韩欧美国产一二三区| 91香蕉国产在线观看软件| 九色综合狠狠综合久久| 一区二区三区四区不卡视频| 久久久国产午夜精品| 欧美日韩精品一区二区三区四区| 国产一区二区按摩在线观看| 亚洲国产cao| 国产精品网站导航| 欧美va亚洲va| 欧美日韩高清影院| 99综合电影在线视频| 久久国内精品自在自线400部|