C的Crc32 代码转成java的 crc32 代码 不用java内置的,该怎么解决

 我来答
懂事且健壮灬小喵e
推荐于2016-01-30 · TA获得超过756个赞
知道小有建树答主
回答量:575
采纳率:52%
帮助的人:406万
展开全部
public class Crc32 {
private static long[] crc32Table = new long[256];

static {
long crcValue;
for (int i = 0; i < 256; i++) {
crcValue = i;
for (int j = 0; j < 8; j++) {
if ((crcValue & 1) == 1) {
crcValue = crcValue >> 1;
crcValue = 0x00000000edb88320L ^ crcValue;
} else {
crcValue = crcValue >> 1;

}
}
crc32Table[i] = crcValue;
}

}

public static long getCrc32(byte[] bytes) {
long resultCrcValue = 0x00000000ffffffffL;
for (int i = 0; i < bytes.length; i++) {
int index = (int) ((resultCrcValue ^ bytes[i]) & 0xff);
resultCrcValue = crc32Table[index] ^ (resultCrcValue >> 8);
}
resultCrcValue = resultCrcValue ^ 0x00000000ffffffffL;
return resultCrcValue;
}

public static void main(String[] args) {
String testStr = "asfkjfkasdjfkldjfhdjfhasdjkfj;asdkljfk;asdjfcnnd";
java.util.zip.CRC32 jdkCrc32 = new java.util.zip.CRC32();
jdkCrc32.update(testStr.getBytes());
System.out.println("jdk  crc32: " + jdkCrc32.getValue());
System.out.println("test crc32: " + getCrc32(testStr.getBytes()));
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式