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;
|
import com.safeluck.aykj.utils.BytesUtils;
|
|
import java.util.Calendar;
|
import java.util.Random;
|
|
/**
|
* 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;
|
|
byte[] tranferbytes = new byte[y];
|
System.arraycopy(temp,0,tranferbytes,0,y);
|
Log.i(TAG,"转义过后:"+ ByteUtil.byte2hex(tranferbytes));
|
return tranferbytes;
|
}
|
|
/**
|
*接收消息时:转义还原
|
* @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;
|
}
|
|
public static boolean isDigital(String str) {
|
String regx= "^\\d+";
|
return str.matches(regx);
|
}
|
|
public static void main(String []args){
|
String str = "EB00020000031420010000000400A5";
|
// String str = "7EEB00020000031420010000000400A5007E";
|
String str1 = "EB000200000314200100000004030D00";
|
// String str1 = "7EEB000200000314200100000004030D00D57E";
|
String str2 = "EB000200000314200100000004035000";
|
byte [] dtas=BytesUtils.hexStringToBytes(str);
|
byte checkcode = calCheckCode(dtas);
|
System.out.println(BytesUtils.toHexString(checkcode));
|
}
|
|
|
|
public static int[] getRandomInts(int size,int randomMax){
|
Random random = new Random();
|
int[] a=new int[size];
|
int index=0;
|
|
while(index<size){
|
System.out.println("---------------");
|
int temp=random.nextInt(randomMax);
|
|
if(temp!=0&&!contains(a,temp)){
|
a[index++]=temp;
|
}
|
}
|
|
for(int i=0;i<a.length;i++){
|
System.out.println(a[i]);
|
}
|
|
|
return a;
|
|
}
|
|
|
|
//该方法完成判断temp在a数组中是否包含
|
//包含返回true
|
public static boolean contains(int[] a,int temp){
|
|
for(int i=0;i<a.length;i++){
|
if(a[i]==temp){
|
return true;
|
}
|
}
|
|
return false;
|
}
|
|
|
public static String getHHmm(){
|
String mMonth,mDay,mWay,mHours,mMinute;
|
StringBuffer stringBuffer = new StringBuffer();
|
Calendar calendar = Calendar.getInstance();
|
mMonth = String.valueOf(calendar.get(Calendar.MONTH) + 1); //获取日期的月
|
mDay = String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)); //获取日期的天
|
mWay = String.valueOf(calendar.get(Calendar.DAY_OF_WEEK)); //获取日期的星期
|
|
/**
|
* 如果小时是个位数
|
*
|
*则在前面价格“0”
|
* */
|
if (calendar.get(Calendar.HOUR) < 10) {
|
mHours = "0" + calendar.get(Calendar.HOUR);
|
|
} else {
|
mHours = String.valueOf(calendar.get(Calendar.HOUR));
|
}
|
stringBuffer.append(mHours);
|
stringBuffer.append(":");
|
/**
|
* 如果分钟是个位数
|
*
|
*则在前面价格“0”
|
* */
|
if (calendar.get(Calendar.MINUTE) < 10) {
|
mMinute = "0" + calendar.get(Calendar.MINUTE);
|
} else {
|
mMinute = String.valueOf(calendar.get(Calendar.MINUTE));
|
}
|
stringBuffer.append(mMinute);
|
/**
|
* 获取星期
|
* 并设置出来
|
* */
|
if ("1".equals(mWay)) {
|
mWay = "天";
|
} else if ("2".equals(mWay)) {
|
mWay = "一";
|
} else if ("3".equals(mWay)) {
|
mWay = "二";
|
} else if ("4".equals(mWay)) {
|
mWay = "三";
|
} else if ("5".equals(mWay)) {
|
mWay = "四";
|
} else if ("6".equals(mWay)) {
|
mWay = "五";
|
} else if ("7".equals(mWay)) {
|
mWay = "六";
|
}
|
return stringBuffer.toString();
|
}
|
}
|