搜索
bottom↓
回复: 4

C语言的CRC8函数,怎么改成delphi的?

[复制链接]

出0入0汤圆

发表于 2010-8-3 14:36:01 | 显示全部楼层 |阅读模式
C语言的CRC8函数,怎么改成delphi的?


uint8 crc8_ibutton_update(uint8 crc,uint8 data)
{
        uint8 i;

        crc = crc ^ data;
        for (i = 0; i < 8; i++)
        {
                if (crc & 0x01)
                        {
                        crc = (crc >> 1) ^ 0x8C;
                        }
                else
                        {
                        crc >>= 1;
                        }
        }

        return crc;
}


uint8 crc8_ibutton_check(const uint8 *data,uint16 size)
        {
        uint8 crc = 0;

        for (uint16 i = 0; i < size; i++)
        {
                crc = crc8_ibutton_update(crc, data);
        }

        return crc;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2010-8-3 15:24:13 | 显示全部楼层
Function crc8_ibutton_update(crc : Byte; data : Byte) : Byte;
Var
  i: Byte;
begin
  crc := crc xor data;

  for i := 0 to 8 - 1 do
  begin

     if  ((crc and $1 )<>0)    then
        crc := (crc shr 1) xor $8C
     else
        crc := crc shr 1;
  end;
  result := crc;
end;

//注意数组的下标,从0开始
Function crc8_ibutton_check(data : array of Byte; size : Word) : Byte;
var
  crc:Byte;
  i  :Word;
begin
  crc :=0;

  for i := 0 to size - 1 do
  crc := crc8_ibutton_update(crc,data);

  result:= crc;
end;

出0入70汤圆

发表于 2010-8-3 15:27:52 | 显示全部楼层
Function Crc_8n(p : array of BYTE; len : BYTE) : Byte;
Var
  j, cbit, aout, crc, crc_a, crc_b : Byte;
  i : integer;
begin
  crc := 0;
  i := 0;

  // 取移位的位
  repeat
   crc_a := p;
    inc(i);
   j := 8;
   cbit := 1;
    repeat
      crc_b := crc_a;
     crc_b := crc_b xor crc; // ?????
     aout := crc_b and cbit;
     if aout<>0 then begin
        crc := crc xor $18; // ?????
        crc := crc shr 1;
        crc := crc or $80;
     end else begin
       crc := crc shr 1;
     end;
     crc_a := crc_a shr 1;
      dec(j);
    until j = 0;
    dec(len);
  until len = 0;

  result := crc;
end;

出0入4汤圆

发表于 2010-8-3 15:55:04 | 显示全部楼层
我曾发了一个贴子,无人问津,里面有DELPHI计算各种校验的代码,

出0入0汤圆

发表于 2011-8-2 17:16:06 | 显示全部楼层
delphi 我正好也要这样该,一不小心就搜到这里了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-23 09:34

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表