好的说到这里,上代码!!! 好的说到这里,上代码!!! 好的说到这里,上代码!!! 好的说到这里,上代码!!! 学会了吗,屏幕前的你? 我有多喜欢你,可能我自己都描述不出来,就像你是月亮,我是星星,满天星河只为你
基于Java的32位CRC校验
1. 都是程序员,话不多说直接进入正题,首先你手上有一坨String类型16进制字符串。你需要把这坨字符串丢到某各地方,某个地方再回你一坨你想要的东西 (不用说你们也知道是什么了吧——当然是校验结果)
//首先把手里的字符串转为Byte数组 public static byte[] getHexBytes(String str){ byte[] bytes = new byte[str.length() / 2]; for(int i = 0; i < str.length() / 2; i++) { String subStr = str.substring(i * 2, i * 2 + 2); bytes[i] = (byte) Integer.parseInt(subStr, 16); } return bytes; }
2. 这样呢,我们拿到了一个数组,然后改干什么? ——当然是丢进去校验了,具体过程:先这样,再这样,再这样…
//扔进来校验 public static String getCRCValues(byte[] b){ CRC32 c = new CRC32(); c.reset();//Resets CRC-32 to initial value. //将数据丢入CRC32解码器 c.update(b, 0, b.length); //获取CRC32 的值 默认返回值类型为long 用于保证返回值是一个正数 int value = (int) c.getValue(); //转为16进制 String value_string = Integer.toHexString(value); return value_string; }
3. 好的,到了这里我们手里有了校验后的一个字符串,但是这个字符串在并没有补 0,比如说第一位是 “0A”,实际上它是 “A”。怎么理解呢?就比如正确的校验结果本应该是 ***“0D997DFF”***,实际上它会返回 ***“D997DFF”***,我们做个简单的补 0 就好了,这个操作有手就行。。。
//16进制补零 public static String getRightLengths(String hexs){ //如果长度为7,给前面加个0 if (hexs.length() == 7){ return 0+hexs; }else{ return hexs; } }
4. 到此为止,我们就实现了扔进去字符串,返回校验结果。就是这么简单而已,下面,笔者公布完整代码!!!没看懂的萌新可以加上我讨论,资料有V
public class CRCUtils { /** * @author MaChu! * 调用这个就可以啦 * @param hexs * @return */ public String getCRCString(String hexs) { //用于验证的数据 byte[] b = getHexBytes(hexs); //得到校验后的字符串 String value_string = getCRCValues(b); //补0 返回字符串 return getRightLengths(value_string); } //扔进来校验 public static String getCRCValues(byte[] b){ CRC32 c = new CRC32(); c.reset();//Resets CRC-32 to initial value. c.update(b, 0, b.length);//将数据丢入CRC32解码器 int value = (int) c.getValue();//获取CRC32 的值 默认返回值类型为long 用于保证返回值是一个正数 //转为16进制 String value_string = Integer.toHexString(value); return value_string; } //将16进制的字符串转成字符数组 public static byte[] getHexBytes(String str){ byte[] bytes = new byte[str.length() / 2]; for(int i = 0; i < str.length() / 2; i++) { String subStr = str.substring(i * 2, i * 2 + 2); bytes[i] = (byte) Integer.parseInt(subStr, 16); } return bytes; } //16进制补零 public static String getRightLengths(String hexs){ if (hexs.length() == 7){ return 0+hexs; }else{ return hexs; } } }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算