zoukankan      html  css  js  c++  java
  • delphi编程CRC算法的实现,以下是全部的代码

    1. uses  
    2.   Windows,SysUtils,Classes;  
    3. const  //Crc32表  
    4.   Table:Array[0..255of DWORD=  
    5.   ( $00000000,  $77073096$EE0E612C$990951BA,  
    6.     $076DC419$706AF48F$E963A535$9E6495A3,  
    7.     $0EDB8832$79DCB8A4$E0D5E91E$97D2D988,  
    8.     $09B64C2B$7EB17CBD$E7B82D07$90BF1D91,  
    9.     $1DB71064$6AB020F2$F3B97148$84BE41DE,  
    10.     $1ADAD47D$6DDDE4EB$F4D4B551$83D385C7,  
    11.     $136C9856$646BA8C0$FD62F97A$8A65C9EC,  
    12.     $14015C4F$63066CD9$FA0F3D63$8D080DF5,  
    13.     $3B6E20C8$4C69105E$D56041E4$A2677172,  
    14.     $3C03E4D1$4B04D447$D20D85FD$A50AB56B,  
    15.     $35B5A8FA$42B2986C$DBBBC9D6$ACBCF940,  
    16.     $32D86CE3$45DF5C75$DCD60DCF$ABD13D59,  
    17.     $26D930AC$51DE003A$C8D75180$BFD06116,  
    18.     $21B4F4B5$56B3C423$CFBA9599$B8BDA50F,  
    19.     $2802B89E$5F058808$C60CD9B2$B10BE924,  
    20.     $2F6F7C87$58684C11$C1611DAB$B6662D3D,  
    21.     $76DC4190$01DB7106$98D220BC$EFD5102A,  
    22.     $71B18589$06B6B51F$9FBFE4A5$E8B8D433,  
    23.     $7807C9A2$0F00F934$9609A88E$E10E9818,  
    24.     $7F6A0DBB$086D3D2D$91646C97$E6635C01,  
    25.     $6B6B51F4$1C6C6162$856530D8$F262004E,  
    26.     $6C0695ED$1B01A57B$8208F4C1$F50FC457,  
    27.     $65B0D9C6$12B7E950$8BBEB8EA$FCB9887C,  
    28.     $62DD1DDF$15DA2D49$8CD37CF3$FBD44C65,  
    29.     $4DB26158$3AB551CE$A3BC0074$D4BB30E2,  
    30.     $4ADFA541$3DD895D7$A4D1C46D$D3D6F4FB,  
    31.     $4369E96A$346ED9FC$AD678846$DA60B8D0,  
    32.     $44042D73$33031DE5$AA0A4C5F$DD0D7CC9,  
    33.     $5005713C$270241AA$BE0B1010$C90C2086,  
    34.     $5768B525$206F85B3$B966D409$CE61E49F,  
    35.     $5EDEF90E$29D9C998$B0D09822$C7D7A8B4,  
    36.     $59B33D17$2EB40D81$B7BD5C3B$C0BA6CAD,  
    37.     $EDB88320$9ABFB3B6$03B6E20C$74B1D29A,  
    38.     $EAD54739$9DD277AF$04DB2615$73DC1683,  
    39.     $E3630B12$94643B84$0D6D6A3E$7A6A5AA8,  
    40.     $E40ECF0B$9309FF9D$0A00AE27$7D079EB1,  
    41.     $F00F9344$8708A3D2$1E01F268$6906C2FE,  
    42.     $F762575D$806567CB$196C3671$6E6B06E7,  
    43.     $FED41B76$89D32BE0$10DA7A5A$67DD4ACC,  
    44.     $F9B9DF6F$8EBEEFF9$17B7BE43$60B08ED5,  
    45.     $D6D6A3E8$A1D1937E$38D8C2C4$4FDFF252,  
    46.     $D1BB67F1$A6BC5767$3FB506DD$48B2364B,  
    47.     $D80D2BDA$AF0A1B4C$36034AF6$41047A60,  
    48.     $DF60EFC3$A867DF55$316E8EEF$4669BE79,  
    49.     $CB61B38C$BC66831A$256FD2A0$5268E236,  
    50.     $CC0C7795$BB0B4703$220216B9$5505262F,  
    51.     $C5BA3BBE$B2BD0B28$2BB45A92$5CB36A04,  
    52.     $C2D7FFA7$B5D0CF31$2CD99E8B$5BDEAE1D,  
    53.     $9B64C2B0$EC63F226$756AA39C$026D930A,  
    54.     $9C0906A9$EB0E363F$72076785$05005713,  
    55.     $95BF4A82$E2B87A14$7BB12BAE$0CB61B38,  
    56.     $92D28E9B$E5D5BE0D$7CDCEFB7$0BDBDF21,  
    57.     $86D3D2D4$F1D4E242$68DDB3F8$1FDA836E,  
    58.     $81BE16CD$F6B9265B$6FB077E1$18B74777,  
    59.     $88085AE6$FF0F6A70$66063BCA$11010B5C,  
    60.     $8F659EFF$F862AE69$616BFFD3$166CCF45,  
    61.     $A00AE278$D70DD2EE$4E048354$3903B3C2,  
    62.     $A7672661$D06016F7$4969474D$3E6E77DB,  
    63.     $AED16A4A$D9D65ADC$40DF0B66$37D83BF0,  
    64.     $A9BCAE53$DEBB9EC5$47B2CF7F$30B5FFE9,  
    65.     $BDBDF21C$CABAC28A$53B39330$24B4A3A6,  
    66.     $BAD03605$CDD70693$54DE5729$23D967BF,  
    67.     $B3667A2E$C4614AB8$5D681B02$2A6F2B94,  
    68.     $B40BBE37$C30C8EA1$5A05DF1B$2D02EF8D);  
    69.    procedure GetCRC32File(FileName:string;var CRC32:DWORD);  
    70.    function GetCrc32Str(s: string; Seed: LongInt):string;  
    71.     
    72. implementation  
    73.    
    74. procedure GetCRC32File(FileName:string;var CRC32:DWORD);  
    75. var  
    76.   F:file;  
    77.   BytesRead:DWORD;  
    78.   Buffer:array[1..65521of Byte;  
    79.   i:Word;  
    80. begin  
    81.   FileMode :=0;  
    82.   CRC32 :=$ffffffff;  
    83.   {$I-}  
    84.   AssignFile(F,FileName);  
    85.   Reset(F,1);  
    86.   if IoResult = 0 then  
    87.     begin  
    88.       repeat  
    89.       BlockRead(F,Buffer,Sizeof(Buffer),BytesRead);  
    90.       for i := 1 to BytesRead do  
    91.         CRC32 := (CRC32 shr 8xor Table[Buffer[i] xor (CRC32 and $000000ff)];  
    92.       until BytesRead = 0;  
    93.     end;  
    94.   CloseFile(F);  
    95.   {$I+}  
    96.   CRC32 := not CRC32;  
    97. end;  
    98.      
    99. function GetCrc32Str(s: string; Seed: LongInt):string;  
    100. var  
    101.   Count: Integer;  
    102.   CrcVal: LongInt;  
    103. begin  
    104.   CrcVal := Seed;  
    105.   for Count := 1 to Length(s) do  
    106.     CrcVal := Table[Byte(CrcVal xor DWORD(Ord(s[Count])))] xor ((CrcVal shr 8and $00FFFFFF);  
    107.   Result := IntToHex(not(CrcVal), 8);  
    108. end;  
    109. end.  
    110.    
    111. 调用:  
    112. uses Crc32;  
    113. procedure TForm1.Button1Click(Sender: TObject);  
    114. begin  
    115.   Edit1.Text:=GetCrc32Str('11111111',8);//这里取指定字符串的CRC32校验值;  
    116. end;  
    117. procedure TForm1.Button2Click(Sender: TObject);  
    118. var  
    119.   FileStr:String;  
    120.   crc: DWORD;   
    121. begin  
    122.   FileStr:=Application.ExeName;//这里取指定的文件的crc32校验值;  
    123.   GetCRC32File(FileStr,crc);  
    124.   if crc<>0 then  
    125.     Edit2.Text:=PChar(IntToHex(crc,6));  
    126. end;  
  • 相关阅读:
    C#设计模式-原型模式
    C#设计模式-建造者模式
    c#设计模式-组合模式
    c#设计模式-适配器模式
    c#设计模式-命令模式
    c#设计模式-观察者模式
    c#设计模式-工厂方法
    C#设计模式-简单工厂
    C#设计模式-工厂模式
    C#设计模式-单例模式
  • 原文地址:https://www.cnblogs.com/ljl_falcon/p/2405962.html
Copyright © 2011-2022 走看看