在做项目时遇到会在发送数据前对帧数据进行效验的操作,踩了坑,在不懈努力下脱了坑,特此记录下。
首先贴个工具类: /** * 把一个整形改为4位的byte数组 * * @param value * @return * @throws Exception */ public static byte[] integerTo4Ints(int value) { byte[] result = new byte[4]; result[0] = (byte) ((value >>> 24) & 0xFF); result[1] = (byte) ((value >>> 16) & 0xFF); result[2] = (byte) ((value >>> 8) & 0xFF); result[3] = (byte) (value & 0xFF); return result; }
1、关于什么是CRC32数据校验
https://zhidao.baidu.com/question/5381768.html
2、我遇到的问题是:在进行数据效验的时候会出现有的帧数据返回结果生成byte数组会出错
正确的:e1xxaxx8
不正确的:5xxdxx2
造成这个问题的原因在于:
在返回的时候把数据进行了转换,现在想想有什么必要
解决方法就是:直接返回校验后的原始数据没必要进行数据转换,然后用上面贴的转换工具直接转换即可
研究的不太透彻,就先记录到这里吧。
人生前进中,踩坑继续~