CRC32生成码表方法实现

csdnsa_hwdw

csdnsa_hwdw

2016-02-19 19:59

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

    Table:Array[0..255] of DWORD;
  
  procedure MakeTable();
  var
    i,j,Crc:integer;
  begin
    for i:=0 to 255 do
      begin
        Crc:=i;
        for j:=0 to 7 do
          begin
            if (Crc and 1)0 then
              Crc:=(Crc shr 1) xor $EDB88320
            else
              Crc:=Crc shr 1;
          end;
        Table[i]:=Crc;
      end;
  end;
  
  procedure GetCRC32File(FileName:string;var CRC32:DWORD);
  var
    F:file;
    BytesRead:DWORD;
    Buffer:array[1..65521] of Byte;
    i:Word;
  begin
    FileMode :=0;
    CRC32 :=$ffffffff;
    {$I-}
    AssignFile(F,FileName);
    Reset(F,1);
    if IoResult = 0 then
      begin
        repeat
        BlockRead(F,Buffer,Sizeof(Buffer),BytesRead);
        for i := 1 to BytesRead do
          CRC32 := (CRC32 shr 8) xor Table[Buffer[i] xor (CRC32 and $000000ff)];
        until BytesRead = 0;
      end;
    CloseFile(F);
    {$I+}
    CRC32 := not CRC32;
  end;
     
  function GetCrc32Str(s: string; Seed: LongInt):string;
  var
    Count: Integer;
    CrcVal: LongInt;
  begin
    CrcVal := Seed;
    for Count := 1 to Length(s) do
      CrcVal := Table[Byte(CrcVal xor DWORD(Ord(s[Count])))] xor ((CrcVal shr 8) and $00FFFFFF);
    Result := IntToHex(not(CrcVal), 8);
  end;
  
  调用:
  procedure TForm1.Button1Click(Sender: TObject);
  begin
    MakeTable();
    Edit1.Text:=GetCrc32Str('11111111',8);//这里取指定字符串的CRC32校验值;
  end;
  
  procedure TForm1.Button2Click(Sender: TObject);
  var
    FileStr:String;
    crc: DWORD; 
  begin
    MakeTable();
    FileStr:=Application.ExeName;//这里取指定的文件的crc32校验值;
    GetCRC32File(FileStr,crc);
    if crc0 then
      Edit2.Text:=PChar(IntToHex(crc,6));
  end;
  

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

CRC32生成码表方法实现

编程语言 网络编程
CRC32生成码表方法实现

生成GBK码表

编程语言 网络编程
生成GBK码表

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

CRC-16/CRC-32 程序代码

编程语言 网络编程
CRC-16/CRC-32 程序代码

CRC算法的实现

编程语言 网络编程
CRC算法的实现

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

CRC算法与实现

C语言教程 C语言函数
CRC算法与实现

拼音码表的生成

PHP
拼音码表的生成

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

excel单元格引用

excel单元格引用

制作一个简单的setup

制作一个简单的setup
下拉加载更多内容 ↓