您的位置:程序门 -> delphi -> 网络通信/分布式开发



c++中的crc8转换为delphi代码问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


c++中的crc8转换为delphi代码问题
发表于:2008-02-15 10:02:57 楼主
#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的,谢谢大家!
发表于:2008-02-15 11:53:221楼 得分:0
delphi(pascal) code
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;
发表于:2008-02-16 20:47:092楼 得分:0
mark1
发表于:2008-02-18 09:12:023楼 得分:0

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;



快速检索

最新资讯
热门点击