package safeluck.drive.evaluation.util;
|
|
import android.content.res.Resources;
|
import android.util.Log;
|
import android.util.TypedValue;
|
|
import com.anyun.exam.lib.MyLog;
|
import com.anyun.exam.lib.util.ByteUtil;
|
|
/**
|
* MyApplication2
|
* Created by lzw on 2019/3/18. 13:13:42
|
* 邮箱:632393724@qq.com
|
* All Rights Saved! Chongqing AnYun Tech co. LTD
|
*/
|
public class Utils {
|
private static final String TAG = "Utils";
|
public static float px2dp(float value){
|
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,value, Resources.getSystem().getDisplayMetrics());
|
}
|
|
/**
|
* dp值转像素
|
* @param dpValue
|
* @return
|
*/
|
public static float dp2Px(int dpValue){
|
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX,dpValue,Resources.getSystem().getDisplayMetrics());
|
}
|
|
/**
|
* 平台协议生成的校验码
|
* @param bytes
|
* @return
|
*/
|
|
public static byte calCheckCode(byte[] bytes){
|
byte checkCode =0;
|
// 参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。
|
for (int i = 0; i < bytes.length; i++) {
|
checkCode ^= bytes[i];
|
}
|
|
return checkCode;
|
}
|
|
/**
|
* 转义
|
* 采用Ox7e表示,若校验码、消息头以及消息体中出现0x7e,则要进行转义处理,转义规则定义如下:
|
* 0x7e<——>0x7d后紧跟一个0x02;
|
* 0x7d<——>0x7d后紧跟一个0x01。
|
* @param datas
|
* @return
|
*/
|
public static byte[] transferMeaning(byte[] datas){
|
byte [] temp = new byte[datas.length*2];
|
int y = 0;
|
temp[y++] = 0x7e;
|
for (int i = 1; i < datas.length-1; i++) {
|
if (datas[i] == 0x7E) {
|
temp[y++] = 0x7D;
|
temp[y++] = 0x02;
|
} else if (datas[i] == 0x7D) {
|
temp[y++] = 0x7D;
|
temp[y++] = 0x01;
|
} else {
|
temp[y++] = datas[i];
|
}
|
}
|
temp[y++] = 0x7e;
|
Log.i(TAG,"转义过后:"+ ByteUtil.byte2hex(temp));
|
return temp;
|
}
|
|
/**
|
*接收消息时:转义还原
|
* @param datas
|
* @return
|
*/
|
public static byte[] parseMsg(byte[] datas){
|
byte[] temp = new byte[datas.length];
|
int y =0 ;
|
for (int i = 0; i < datas.length; i++) {
|
if (datas[i]==0x7d && datas[i+1]==0x02 ){
|
temp[y++] = 0x7e;
|
i++;
|
continue;
|
}else if (datas[i]==0x7d && datas[i+1]==0x01 ){
|
|
temp[y++] = 0x7d;
|
i++;
|
continue;
|
}else{
|
temp[y++] = datas[i];
|
}
|
}
|
return temp;
|
}
|
}
|