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

qq_22687323 qq_22687323 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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
和我用专门软件得到的值完全不一样,请问是哪一步出了问题
...全文

相关推荐

java 实现的CRC32算法

用java 编写实现的CRC32算法,很详细

wdhaotian

Java编写的CRC校验

Java下的CRC校验,在Android系统Eclipse平台下编译通过,可以直接copy使用

zxjf0105

JAVA下两种方法实现CRC算法

JAVA下使用两种方法(计算法、查表法)实现CRC(XMODEM)算法,以及验证代码

DeeYang

CRC算法 (Java版)

CRC算法,包含8/16/32/64位 CRC校验算法,Java语言实现。

alphen

计算字符串或文件的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);

luckychr
评论 2
收藏 已收藏
分享
返回顶部
qq_22687323
Eclipse 58,439 成员 49,457 内容