package com.hdl.sdk.ttl.Utils.HDLUtlis;
|
|
import java.math.BigDecimal;
|
import java.nio.ByteBuffer;
|
import java.nio.ByteOrder;
|
|
/**
|
* Created by JLChen on 2019/7/25
|
*/
|
public class HDLUtlis {
|
|
/**
|
* 将object转为Integer类型
|
*
|
* @param object
|
* @return
|
*/
|
public static Integer getIntegerByObject(Object object) {
|
Integer in = null;
|
if (object != null) {
|
if (object instanceof Integer) {
|
in = (Integer) object;
|
} else if (object instanceof String) {
|
in = Integer.parseInt((String) object);
|
} else if (object instanceof Double) {
|
in = (int) ((double) object);
|
} else if (object instanceof Float) {
|
in = (int) ((float) object);
|
} else if (object instanceof BigDecimal) {
|
in = ((BigDecimal) object).intValue();
|
} else if (object instanceof Long) {
|
in = ((Long) object).intValue();
|
}
|
}
|
return in;
|
}
|
|
/**
|
* int类型转4字节byte数组
|
*
|
* @param mInt
|
* @return 4字节byte数组
|
*/
|
public static byte[] intToByteArray(int mInt) {
|
byte[] result = new byte[4];
|
// 由高位到低位
|
result[0] = (byte) ((mInt >> 24) & 0xFF);
|
result[1] = (byte) ((mInt >> 16) & 0xFF);
|
result[2] = (byte) ((mInt >> 8) & 0xFF);
|
result[3] = (byte) (mInt & 0xFF);
|
return result;
|
}
|
|
/**
|
* byte[]转int
|
*
|
* @param bytes
|
* @return
|
*/
|
public static int byteArrayToInt(byte[] bytes) {
|
int value = 0;
|
// 由高位到低位
|
for (int i = 0; i < 4; i++) {
|
int shift = (4 - 1 - i) * 8;
|
value += (bytes[i] & 0x000000FF) << shift;// 往高位游
|
}
|
return value;
|
}
|
|
|
public static float byte2Float(byte[] bytes) {
|
/* if (bytes.length != 4) {
|
return 0;
|
}*/
|
byte b[] = bytes;
|
ByteBuffer buf = ByteBuffer.allocateDirect(4);
|
buf = buf.order(ByteOrder.LITTLE_ENDIAN);//小端用这行代码,默认大端转换
|
buf.put(b);
|
buf.rewind();
|
float f2 = buf.getFloat();
|
return f2;
|
}
|
|
/**
|
* 调整int 类型参数
|
*
|
* @return progress
|
*/
|
public static int getTrueProgressInt(int progress) {
|
if (progress < 0) {
|
progress = 0;
|
} else if (progress > 100) {
|
progress = 100;
|
}
|
return progress;
|
}
|
|
|
/**
|
* 4 byte 转换为float类型
|
*
|
* @param b1
|
* @param b2
|
* @param b3
|
* @param b4
|
* @return
|
*/
|
public static float byteToFloat(byte b1, byte b2, byte b3, byte b4) {
|
byte[] mByte = new byte[4];
|
mByte[0] = b1;
|
mByte[1] = b2;
|
mByte[2] = b3;
|
mByte[3] = b4;
|
return byteArrayToFloat(mByte);
|
}
|
|
|
/**
|
* byte[4]数组 转换为float类型
|
*
|
* @param arr 长度为4
|
* @return
|
*/
|
public static float byteArrayToFloat(byte[] arr) {
|
try {
|
return Float.intBitsToFloat(getInt(arr));
|
} catch (Exception e) {
|
e.printStackTrace();
|
return 0;
|
}
|
}
|
|
|
/**
|
* 连续4个字节获得一个int
|
*
|
* @param arr
|
* @return int
|
*/
|
public static int getInt(byte[] arr) {
|
return (0xff000000 & (arr[0] << 24)) |
|
(0x00ff0000 & (arr[1] << 16)) |
|
(0x0000ff00 & (arr[2] << 8)) |
|
(0x000000ff & arr[3]);
|
}
|
}
|