#ifndef __CRC8_VERIFY_C
#define __CRC8_VERIFY_C
flash unsigned char CRC8en_TAB[256] = {
    0xF3,0x07,0x0E,0x09,0x1C,0x12,0x15,0x38,0x3F,0x31,0x24,0x23,0x2A,0x2D,0xDE,0x5C,
    0x70,0x77,0x5D,0x7E,0x79,0x6C,0x6B,0x62,0x65,0x48,0x4F,0x46,0x41,0x54,0x53,0x5A,
    0xE0,0xE7,0xEE,0xE9,0xFC,0xFB,0xF2,0xF5,0xD8,0xDF,0xD6,0xD1,0xC4,0xC3,0xCA,0xCD,
    0x90,0x97,0x9E,0x99,0x8C,0x8B,0x82,0x85,0xA8,0xAF,0xA6,0xA1,0xB4,0xB3,0xBA,0xBD,
    0xC7,0xC0,0xC9,0xCE,0xDB,0xD5,0xD2,0xF8,0xF1,0xF6,0xE3,0xE4,0xED,0xEA,0xDC,0xAE,
    0xB7,0xB0,0xB9,0x0C,0xBE,0xAB,0xAC,0xA5,0x8F,0x88,0x81,0x86,0x93,0x94,0x9D,0x9A,
    0x27,0x20,0x29,0x2E,0x3B,0x3C,0x35,0x32,0x1F,0x18,0x11,0x16,0x03,0x04,0x0D,0x0A,
    0x57,0x50,0x59,0x5E,0x4B,0x4C,0x45,0x42,0x6F,0x68,0x61,0x66,0x73,0x74,0x7D,0x7A,
    0x89,0x8E,0x87,0x80,0x95,0x92,0x9B,0x9C,0xB1,0xB6,0xBF,0xB8,0xAD,0xAA,0xA3,0xA4,
    0xF9,0xFE,0xF7,0xF0,0xE5,0xE2,0xEB,0xEC,0xC1,0xC6,0xCF,0xC8,0xDD,0xDA,0xD3,0xD4,
    0x69,0x6E,0x67,0x60,0x75,0x72,0x7B,0x7C,0x51,0x56,0x5F,0x58,0x4D,0x4A,0x43,0x44,
    0x19,0x1E,0x17,0x10,0x05,0x02,0x0B,0x21,0x26,0x2F,0x28,0x3D,0x3A,0x33,0x34,0x13,
    0x4E,0x49,0x40,0x47,0x52,0x55,0x1B,0x5B,0x76,0x71,0x78,0x7F,0x6A,0x6D,0x64,0x63,
    0x3E,0x39,0x30,0x37,0x22,0x25,0x2C,0x2B,0xA2,0x06,0x01,0x08,0x0F,0x1A,0x1D,0x14,
    0xA9,0xA0,0xA7,0xB2,0xB5,0xBC,0xBB,0x96,0x91,0x98,0x9F,0x8A,0x8D,0x84,0x83,0xFF,
    0xD9,0xD0,0xD7,0xC2,0xC5,0xCC,0xCB,0xE6,0xE1,0xE8,0xEF,0xFA,0xFD,0xF4,0x00,0x36
};unsigned char CRC8en(unsigned char * tData, unsigned char tLen){
    unsigned char tIndex;
    unsigned char tCRC8 = 0;
    while (tLen --){
        tIndex = tCRC8 ^ (* tpData ++);
        tCRC8 = CRC8en_TAB[tIndex];
    }
    return (~tCRC8);
}
#endif代码如上,请帮我换成delphi的,谢谢大家!

解决方案 »

  1.   


    const
      CRC8en_TAB: array [0..255] of Byte = (
        $F3,$07,$0E,$09,$1C,$12,$15,$38,$3F,$31,$24,$23,$2A,$2D,$DE,$5C,
        $70,$77,$5D,$7E,$79,$6C,$6B,$62,$65,$48,$4F,$46,$41,$54,$53,$5A,
        $E0,$E7,$EE,$E9,$FC,$FB,$F2,$F5,$D8,$DF,$D6,$D1,$C4,$C3,$CA,$CD,
        $90,$97,$9E,$99,$8C,$8B,$82,$85,$A8,$AF,$A6,$A1,$B4,$B3,$BA,$BD,
        $C7,$C0,$C9,$CE,$DB,$D5,$D2,$F8,$F1,$F6,$E3,$E4,$ED,$EA,$DC,$AE,
        $B7,$B0,$B9,$0C,$BE,$AB,$AC,$A5,$8F,$88,$81,$86,$93,$94,$9D,$9A,
        $27,$20,$29,$2E,$3B,$3C,$35,$32,$1F,$18,$11,$16,$03,$04,$0D,$0A,
        $57,$50,$59,$5E,$4B,$4C,$45,$42,$6F,$68,$61,$66,$73,$74,$7D,$7A,
        $89,$8E,$87,$80,$95,$92,$9B,$9C,$B1,$B6,$BF,$B8,$AD,$AA,$A3,$A4,
        $F9,$FE,$F7,$F0,$E5,$E2,$EB,$EC,$C1,$C6,$CF,$C8,$DD,$DA,$D3,$D4,
        $69,$6E,$67,$60,$75,$72,$7B,$7C,$51,$56,$5F,$58,$4D,$4A,$43,$44,
        $19,$1E,$17,$10,$05,$02,$0B,$21,$26,$2F,$28,$3D,$3A,$33,$34,$13,
        $4E,$49,$40,$47,$52,$55,$1B,$5B,$76,$71,$78,$7F,$6A,$6D,$64,$63,
        $3E,$39,$30,$37,$22,$25,$2C,$2B,$A2,$06,$01,$08,$0F,$1A,$1D,$14,
        $A9,$A0,$A7,$B2,$B5,$BC,$BB,$96,$91,$98,$9F,$8A,$8D,$84,$83,$FF,
        $D9,$D0,$D7,$C2,$C5,$CC,$CB,$E6,$E1,$E8,$EF,$FA,$FD,$F4,$00,$36);function CRC8en(tpData: PByte;  tLen: Byte): Byte;
    var
      tIndex: Byte;
      tCRC8 : Byte;
    begin
      tCRC8 := 0;
      while (tLen > 0) do
      begin
        tIndex := tCRC8 xor tpData^;
        inc(tpData);
        tCRC8 := CRC8en_TAB[tIndex];
        dec(tLen);
      end;
      Result := not tCRC8;
    end;
      

  2.   


    const
      CRC8en_TAB: array [0..255] of Byte = (
        $F3,$07,$0E,$09,$1C,$12,$15,$38,$3F,$31,$24,$23,$2A,$2D,$DE,$5C,
        $70,$77,$5D,$7E,$79,$6C,$6B,$62,$65,$48,$4F,$46,$41,$54,$53,$5A,
        $E0,$E7,$EE,$E9,$FC,$FB,$F2,$F5,$D8,$DF,$D6,$D1,$C4,$C3,$CA,$CD,
        $90,$97,$9E,$99,$8C,$8B,$82,$85,$A8,$AF,$A6,$A1,$B4,$B3,$BA,$BD,
        $C7,$C0,$C9,$CE,$DB,$D5,$D2,$F8,$F1,$F6,$E3,$E4,$ED,$EA,$DC,$AE,
        $B7,$B0,$B9,$0C,$BE,$AB,$AC,$A5,$8F,$88,$81,$86,$93,$94,$9D,$9A,
        $27,$20,$29,$2E,$3B,$3C,$35,$32,$1F,$18,$11,$16,$03,$04,$0D,$0A,
        $57,$50,$59,$5E,$4B,$4C,$45,$42,$6F,$68,$61,$66,$73,$74,$7D,$7A,
        $89,$8E,$87,$80,$95,$92,$9B,$9C,$B1,$B6,$BF,$B8,$AD,$AA,$A3,$A4,
        $F9,$FE,$F7,$F0,$E5,$E2,$EB,$EC,$C1,$C6,$CF,$C8,$DD,$DA,$D3,$D4,
        $69,$6E,$67,$60,$75,$72,$7B,$7C,$51,$56,$5F,$58,$4D,$4A,$43,$44,
        $19,$1E,$17,$10,$05,$02,$0B,$21,$26,$2F,$28,$3D,$3A,$33,$34,$13,
        $4E,$49,$40,$47,$52,$55,$1B,$5B,$76,$71,$78,$7F,$6A,$6D,$64,$63,
        $3E,$39,$30,$37,$22,$25,$2C,$2B,$A2,$06,$01,$08,$0F,$1A,$1D,$14,
        $A9,$A0,$A7,$B2,$B5,$BC,$BB,$96,$91,$98,$9F,$8A,$8D,$84,$83,$FF,
        $D9,$D0,$D7,$C2,$C5,$CC,$CB,$E6,$E1,$E8,$EF,$FA,$FD,$F4,$00,$36);function CRC8en(tpData: PByte;  tLen: Byte): Byte;
    var
      tIndex: Byte;
      tCRC8 : Byte;
    begin
      tCRC8 := 0;
      while (tLen > 0) do
      begin
        tIndex := tCRC8 xor tpData^;
        inc(tpData);
        tCRC8 := CRC8en_TAB[tIndex];
        dec(tLen);
      end;
      Result := not tCRC8;
    end;
    //建议做下改小小改动
    function CRC8en(tpData: PByte;  tLen: Byte; tmpCRC8: Byte=$FF): Byte;
    var
      tIndex: Byte;
      tCRC8 : Byte;
    begin
      tCRC8 := tmpCRC8;
      while (tLen > 0) do
      begin
        tIndex := tCRC8 xor tpData^;
        inc(tpData);
        tCRC8 := CRC8en_TAB[tIndex];
        dec(tLen);
      end;
      Result := not tCRC8;
    end;