将C语言的CRC32 代码转成JAVA的CRC32 代码

public class CustomerCRC32 {
    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 = "{\"log\":{\"content\":\"2\",\"time\":\"2016-01-05 10:17:24\",\"type\":1001,\"version\":\"[5.0.8.12]\"},\"pcInfo\":{\"ip\":\"192.168.118.57\",\"mac\":\"94-DE-80-A8-E6-EC\",\"onlyId\":\"7CE81DDBF7D05F6AD89CD7D79FAA5905\"},\"user\":{\"name\":\"CFM\"}}";
        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()));
    }
}
时间: 2024-10-14 00:28:38

将C语言的CRC32 代码转成JAVA的CRC32 代码的相关文章

使用ecilpse(Java)调用Matlab代码

1 安装java环境: http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载JDK最新版本并安装,CloudSim需要运行在jdk1.6以上版本. 以jdk1.6.0_24为例,默认的安装目录为C:\Program Files\Java\jdk1.6.0_24. 设置环境变量: 新建系统变量JAVA_HOME,变量值设为JDK安装目录,即C:\Program Files\Java\jdk1.6.0_24: 在P

将一个php的一个查询代码改成go语言

一个朋友的网站用php开发的,总是感觉慢. 我将其中的查询sql server 代码改成go语言 (有7000多条记录) 都能感觉到速度比以前快多了. 努力继续学go语言吧. php没有使用任何框架. package main import ( _ "github.com/lunny/godbc" "github.com/go-xorm/xorm" "net/http" "fmt" ) func testweb(w http.

把代码加密成乱码?不如让代码隐身吧!

先声明,娱乐向,至于有没有实用价值就不知道了...轻喷哈. 今天在网上乱逛的时候看到了陈浩大牛的这篇博客:http://coolshell.cn/articles/1142.html 感觉里面说的WhiteSpace语言很有意思.维基百科: http://zh.wikipedia.org/wiki/Whitespace 一般的编程语言都会忽略空白字符,而WhiteSpace却只识别空白字符,优点竟然是“不能把代码打印带走”... 虽然不知道有没有人真的用这个语言做项目开发,但是这给了我们一个思路

C代码编译成可执行程序的过程

C代码通过编译器编译成可执行代码,经历了四个阶段,依次为:预处理.编译.汇编.链接. 接下来详细讲解各个阶段 一.预处理 1.任务:进行宏定义展开.头文件展开.条件编译,不检查语法. 2.命令:gcc -E [源文件]  -o [预处理文件] 3.案例:用gcc编译器预处理demo1.c代码,预处理后的文本放到demo1.i中.(gcc -E demo1.c -o demo1.i) demo1.c代码如下: 1 #include <stdio.h> 2 3 #define add(a, b)

【代码分享——Java&amp;Json】Json转成java对象,已经java对象转成Json对象

做记录用,肯定有地方不完整,先放着吧 [代码分享--Java&Json]Json转成java对象,已经java对象转成Json对象,布布扣,bubuko.com

把代码写成艺术,真正体会面向对象编程思想

看到一个严厉的帖子,让自己害怕的瞬身颤抖........... http://www.cnblogs.com/menglin2010/archive/2012/02/08/2342029.html 我们学的是面向对象编程的语言比如:java,c#,我们打着面向对象编程的旗号,却做着面向过程编程的工作 现在我们基本上去一个公司,上去就写代码,老板让我们新增功能,我们就开始写新的方法,做着面向过程编程,每个人都不断地向最初的净地里添自己的代码,最初的代码块就像一个公共厕所一样,每个人都自顾自的在里面

【Android端】代码打包成jar包/aar形式

Android端代码打包成jar包和aar形式: 首先,jar包的形式和aar形式有什么区别? 1.打包之后生成的文件地址: *.jar:库/build/intermediates/bundles/debug(release)/classes.jar *.aar:库/build/outputs/aar/libraryname.aar 区别:jar包只包含了classes文件,不包含资源文件:aar不仅包含了classes文件,还包含资源文件 并且,aar的这个可以发布到maven库,然后使用者直

PHP Zend Studio9.0怎么把代码搞成和服务器端的同步(就是直接在服务器端修改)

Zend Studio 可以直接通过Remote System的方式直接连接服务器端的代码,就是可以直接修改服务器端的代码,不过修改的时间小心点,修改就会立即生效的. 选择Remote Systems 后,在下面就会出现下图 把这个tab移动到左边,并在左侧区域点击右键,出现下图,选择 new connection... 输入IP后 next 点 My Home会出现让你输入密码的对话框 属于密码就出现服务器端的 目录结构了,注意不要乱删除东西哦,,,, 这个时候你发现你打开的.php文件是以记

java代码打包成jar以及转换为exe

教你如何把java代码打包成jar文件以及转换为exe可执行文件 1.背景: 学习java时,教材中关于如题问题,只有一小节说明,而且要自己写麻烦的配置文件,最终结果却只能转换为jar文件.实在是心有不爽.此篇博客教你如何方便快捷地把java代码,打包成jar文件以及转换为exe可执行文件 2.前言: 我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 3.准备: 下载e