求助 关于用java编写的CRC32检验算法

qq_22687323 2015-06-06 12:55:48
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
和我用专门软件得到的值完全不一样,请问是哪一步出了问题
...全文
378 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_22687323 2015-06-06
  • 打赏
  • 举报
回复
源代码来源是一位大神的代码,我做了修改为了做这个简直心力交瘁啊!!!
qq_22687323 2015-06-06
  • 打赏
  • 举报
回复
求助

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧