要计算一个长度为15的字符数组的crc8校验码,用java该怎么实现啊?
解决方案 »
- eclipse在win7下项目目录箭头会消失
- 为什么要使用spring事务?什么时候使用?
- 怎么在服务器启动时自动加载一个类
- hibernate 一对多的双向关联 数据添加
- 高手求助!C写的客户端调用java的服务端无返回值!
- jaseperReport 需要显示多个 detail Band
- 如何在<form action="">里向action传递参数?
- 有一个主表A, 它有一个子表B. 现在要对主表A做更新操作.
- 请问如何在weblogic8下面配置mssql2000的数据库连接池
- 部署完EJB JAR文件后,运行TestClient的时候发生如下错误:NameNotFound Exception from test client
- @Transactional注解事物的问题,加急求解
- 邮件内容解码
public static int crc8(byte[] bs,int count){
int crc=0;
for(int i=0;i != count;i++){
int data=bs[i];
int bitCounter=8;
do{
int feedbackBit=(crc ^ data) & 0x01;
if(feedbackBit == 0x01){
crc=crc ^ 0x18;// 0X18 = X^8+X^5+X^4+X^0
}
crc=(crc >> 1) & 0x7F;
if(feedbackBit == 0x01){
crc=crc | 0x80;
}
data=data >> 1;
bitCounter--;
}while(bitCounter > 0);
}
return crc;
}
{
BYTE b0 : 1;
BYTE b1 : 1;
BYTE b2 : 1;
BYTE b3 : 1;
BYTE b4 : 1;
BYTE b5 : 1;
BYTE b6 : 1;
BYTE b7 : 1;
};BYTE COHJx::CrcCheck(BYTE *Str)
{
int i;
BITS crc, xd, j;
BYTE *pCrc, *pXd;
char* p = (char*)Str;
*p = (char)0x80;
pCrc = (BYTE *) &crc;
pXd = (BYTE *) &xd;
*pXd = *pCrc = 0;
for(i = 0; i < OHSTRLENGTH; i++, p++)
{
memcpy(&j, p, 1);
*pXd = *p ^ *pCrc;
crc.b7 = xd.b7 ^ xd.b6 ^ xd.b3;
crc.b6 = xd.b6 ^ xd.b5 ^ xd.b2;
crc.b5 = xd.b5 ^ xd.b4 ^ xd.b1;
crc.b4 = xd.b4 ^ xd.b3 ^ j.b0;
crc.b3 = xd.b6 ^ xd.b2;
crc.b2 = xd.b5 ^ xd.b1;
crc.b1 = xd.b7 ^ xd.b4 ^ j.b0;
}
*pCrc >>= 1;
*pCrc |= 0x80;
return *pCrc;
}