CRC32校验

在处理一个从Linux导出的二进制文件时,遇到了CRC32校验问题。由于Java的CRC32类计算结果与Linux的libz.so库不同,作者决定手动实现CRC32算法。经过研究,作者提供了CRC32算法的关键代码,包括CRC32表和计算方法,并成功通过测试。
摘要由CSDN通过智能技术生成

 

              在上周工作中,碰到了一个关于CRC32校验的问题。如果不明白CRC校验是什么的童鞋可以上网搜搜。

    客户让我解析一个二进制文件,它给我的文件是在实机中(linux)下导出的文件,而我们开发是在windows下开发的,大体给大家介绍下这个文件的的结构

 

 

         简单的就是这样,其实乱七八糟的有上百个片段内容,现在我们要分析的就是头信息中的CRC值和文件内容中part0,part1......一直到partN计算得出的CRC的值进行比较。据客户说,他们从实机导出的数据,计算CRC32值是通过调用zlib中libz.so库的crc32()函数得到的。我想,现在java中有java.util.zip.CRC32类,直接处理就行了,应该满简单的。于是简单构想了下,如何更好的解析文件,在以后文件做出改动或者扩展的时候能够方便维护。想好了之后开工了。

         当C头信息的CRC的值解析出来的时候,和文件内容计算出来的CRC的值,怎么也不一样,我就奇怪了,简单的看了下CRC32类的源码,

package java.util.zip;

/**
 * A class that can be used to compute the CRC-32 of a data stream.
 *
 * @see  Checksum
 * @version  1.32, 11/17/05
 * @author  David Connelly
 */
public
class CRC32 implements Checksum {
    private int crc;

    /**
     * Creates a new CRC32 object.
     */
    public CRC32() {
    }
  

    /**
     * Updates CRC-32 with specified byte.
     */
    public void update(int b) {
 crc = update(crc, b);
    }

    /**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值