求助 关于用java编写的CRC32检验算法
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.util.zip.CRC32;
public class one {
private static int register = 0x0000;
private void caculate(byte b) {
for (int j = 8; j > 0; j--) {
register = register ^ b;
int yu = (((b >>> (8 - j)) & 1) ^ (register >>> 31));
register = register << 1;
if (yu == 1) {
register = register ^ 0x04C11DB7;
}
}
}
public void CRC32File(String filepath) {
File file = new File(filepath);
DataInputStream din;
try {
din = new DataInputStream(new FileInputStream(file));
byte bytes = 0;
System.out.println(file.length());
for (int i = 0; i < file.length(); i++) {
bytes = din.readByte();
caculate(bytes);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
one a= new one();
a.CRC32File("E://Pucal-STUDY//WEB//201414014.rar");
CRC32 b=new CRC32();
System.out.println("here"+register);
System.out.println(Integer.toBinaryString(register));
}
}
我的源代码是这样的,但是在检验后得到了这样的结果
register=2049670324
1111010001010110111110010110100
和我用专门软件得到的值完全不一样,请问是哪一步出了问题

相关推荐
java 实现的CRC32算法
用java 编写实现的CRC32算法,很详细
Java编写的CRC校验
Java下的CRC校验,在Android系统Eclipse平台下编译通过,可以直接copy使用
JAVA下两种方法实现CRC算法
JAVA下使用两种方法(计算法、查表法)实现CRC(XMODEM)算法,以及验证代码
CRC算法 (Java版)
CRC算法,包含8/16/32/64位 CRC校验算法,Java语言实现。
计算字符串或文件的Crc32代码,与JAVA自身的CRC32算法计算结果相同
计算字符串或文件的Crc32代码,提供标准的API,适应各语言开发的系统中调用,且与JAVA自身(import java.util.zip.CRC32)的CRC32算法计算结果相同。 // 获取计算字符Crc32代码 // 以10进制返回Crc32代码 CRC32_API unsigned int getCrc32Code(const unsigned char* pBuffer, unsigned int nBufLen, char* szCrc32); CRC32_API unsigned int getCrc32Code(const char* szBuffer, unsigned int nBufLen, char* szCrc32); // 以16进制返回Crc32代码,长度为八位 CRC32_API unsigned int getCrc32Hex(const unsigned char* pBuffer, unsigned int nBufLen, char* szCrc32); CRC32_API unsigned int getCrc32Hex(const char* szBuffer, unsigned int nBufLen, char* szCrc32); // 获取计算文件Crc32代码 // 以10进制返回Crc32代码 CRC32_API unsigned int getCrc32Code(const char* szFileName, char* szCrc32); // 以16进制返回Crc32代码,长度为八位 CRC32_API unsigned int getCrc32Hex(const char* szFileName, char* szCrc32);


Eclipse
