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]); } }