一. 问题
协议拼接需要checksum函数,用于协议的下发和接收。
checksum使用简单的byte数组相加方式求和计算。
二. 如何使用
-
java中 byte转int (特别注意)
byte b=0x01;
int a=0xff&b; //正确 -
java中 int转byte
int a=0x01;
byte b=(byte)(a);
三. 原理
java中byte是8位 -128~127之间,而int是32bit,在转化前需将高24位置零,这样就不会出现补码导致的转换错误。
四. 简单相加的checksum工具类
/**
* checksum 计算数组和
*
* @param script
* @return
*/
public static int getChecksum(byte[] script){
int sum = 0;
for (byte b : script) {
sum += 0xff & b;
}
return sum;
}