package 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
和我用专门软件得到的值完全不一样,请问是哪一步出了问题