永发信息网

如何用java实现CRC8验证算法

答案:1  悬赏:60  手机版
解决时间 2021-04-16 04:05
如何用java实现CRC8验证算法
最佳答案


package com.dalsemi.onewire.utils;


public class CRC8
{

//--------
//-------- Variables
//--------


private static byte dscrc_table [];


static
{

//Translated from the assembly code in iButton Standards, page 129.
dscrc_table = new byte [256];

int acc;
int crc;

for (int i = 0; i < 256; i++)
{
acc = i;
crc = 0;

for (int j = 0; j < 8; j++)
{
if (((acc ^ crc) & 0x01) == 0x01)
{
crc = ((crc ^ 0x18) >> 1) | 0x80;
}
else
crc = crc >> 1;

acc = acc >> 1;
}

dscrc_table [i] = ( byte ) crc;
}
}

//--------
//-------- Constructor
//--------


private CRC8 ()
{
}

//--------
//-------- Methods
//--------


public static int compute (int dataToCRC, int seed)
{
return (dscrc_table [(seed ^ dataToCRC) & 0x0FF] & 0x0FF);
}


public static int compute (int dataToCRC)
{
return (dscrc_table [dataToCRC & 0x0FF] & 0x0FF);
}


public static int compute (byte dataToCrc [])
{
return compute(dataToCrc, 0, dataToCrc.length);
}


public static int compute (byte dataToCrc [], int off, int len)
{
return compute(dataToCrc, off, len, 0);
}


public static int compute (byte dataToCrc [], int off, int len, int seed)
{

// loop to do the crc on each data element
int CRC8 = seed;

for (int i = 0; i < len; i++)
CRC8 = dscrc_table [(CRC8 ^ dataToCrc [i + off]) & 0x0FF];

return (CRC8 & 0x0FF);
}


public static int compute (byte dataToCrc [], int seed)
{
return compute(dataToCrc, 0, dataToCrc.length, seed);
}
}追问seed参数的作用是什么?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
是不是男人玩起他喜欢的游戏,就会把女朋友丢
康佳涿州有售后吗
他们都说武器什么4%的怎么看
介绍款视频图片编辑制作软件
(600547)山东黄金,是属于上证的哪个指数?
舒华健身.养生器材地址在哪,我要去那里办事
顾影小时候被郭德友救了看到了什么
干好工作的句子,做家务好词好句
英语作文:My visit to
找好听的英文 韩文歌
二手YAMAHA车玩上海那里可以卖的到
麦蒂本赛季什么时候复出?
开光符哪里买
4399里面的那些Flash小游戏怎么制作?
建华汽车修理厂在什么地方啊,我要过去处理事
推荐资讯
湘桥区潮州仁德古庙这个地址怎么能查询到,着
中译英,英译中,做的出的速度
张杰和谢娜最近怎么样
什么是热线通
学电脑服装设计难吗?
otherguy9高清下载的地址 姚有资源速度快的
六年级数学大练习册
有啥办法抓内鬼?
网络情可以信吗?
哈利→死圣,现在开播没,
求 全古文版的《侏儒记》
鹤岗的区号是多少
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?