java crc8_CRC8校验的java实现 | 学步园
java crc8_CRC8校验的java实现 | 学步园
【废话一段】
你说这JAVA,可说是世界上用的人非常之多的一种语言,那么,为什么找一段CRC8校验的实现方式那么难???
继续废话,也还是项目,我需要一个CRC8校验的模块,我承认我懒,因此我直接X度,本以为轻轻松松CtrlC+CtrlV,结果我更换了不下5个关键字,却发现只有CSDN下载有, 还有那个啥网的,总之,没有博客,没有人愿意公开...我没有骗你,要不你试试,搜得到我当街裸奔给你看(除了我的博客)。
其实我曾开发过C#版,C版的CRC8,CRC16,从来没觉得找段代码那么难找。因为我是java新手(最近搞安卓车载平台,不过2个多月以来进步很快),我肯定希望能收藏更多代码的,我思量着:这段CRC8代码那么难找,是为什么?这样的思考是没有结果的,我一拍桌子:哥我给大家上一篇,结了作为java新手的痛苦。
【详细代码】
其实是很简单的啦,具体什么多项式的,我就不讲了,那不大把大把资料。
可说我为什么还要废话呢?因为代码实在太短,注释又不需要很多,你让我空空的一个版面我怎么都觉得是浪费了。
private byte CRC8(byte[] buffer)
{
int crci=0xFF; //起始字节FF
for (int j = 0; j < buffer.length; j++)
{
crci ^= buffer[j] & 0xFF;
for (int i = 0; i < 8; i++)
{
if ((crci & 1) != 0)
{
crci >>= 1;
crci ^= 0xB8; //多项式当中的那个啥的,不同多项式不一样
}
else
{
crci >>= 1;
}
}
}
return (byte)crci;
}
看到了没有,很简单,不过请各位注意,多项式不同,上面的“起始字节”和“多项式中的那个啥”是不一样的,如果你发现算的结果和样本不一样,那么请尝试修改一下“多项式中的那个啥”。