short与byte[]、int与byte[]互转(通过ByteBuffer实现)

/**
* 将int数值转换为占四个字节的Byte数组
*
* @param intVal int 要转换的int值
* @param byteOrder ByteOrder 大小端模式
* @return Byte[]
*/
public static Byte[] int2Bytes(int intVal, ByteOrder byteOrder) {
ByteBuffer buffer = ByteBuffer.allocate(4);
buffer.order(byteOrder);
buffer.asIntBuffer().put(intVal);
byte[] array = buffer.array();
return bytes2Bytes(array);
}

/**
 * 将int数值转换为占四个字节的byte数组
 *
 * @param intVal    int 要转换的int值
 * @param byteOrder ByteOrder 大小端模式
 * @return byte[]
 */
public static byte[] int2bytes(int intVal, ByteOrder byteOrder) {
    ByteBuffer buffer = ByteBuffer.allocate(4);
    buffer.order(byteOrder);
    buffer.asIntBuffer().put(intVal);
    return buffer.array();
}

/**
 * 取四个字节的byte数组所代表的int值
 *
 * @param bytes     byte[]
 * @param byteOrder ByteOrder 大小端模式
 * @return int
 */
private static int bytes2int(byte[] bytes, ByteOrder byteOrder) {
    ByteBuffer buffer = ByteBuffer.wrap(bytes);
    buffer.order(byteOrder);
    return buffer.getInt();
}

/**
 * 将short数值转换为占两个字节的Byte数组
 *
 * @param shortVal  short 要转换的short值
 * @param byteOrder ByteOrder 大小端模式
 * @return Byte[]
 */
public static Byte[] short2Bytes(short shortVal, ByteOrder byteOrder) {
    ByteBuffer buffer = ByteBuffer.allocate(2);
    buffer.order(byteOrder);
    buffer.asShortBuffer().put(shortVal);
    byte[] array = buffer.array();
    return bytes2Bytes(array);
}

/**
 * 将short数值转换为占两个字节的byte数组
 *
 * @param shortVal  short 要转换的short值
 * @param byteOrder ByteOrder 大小端模式
 * @return byte[]
 */
public static byte[] short2bytes(short shortVal, ByteOrder byteOrder) {
    ByteBuffer buffer = ByteBuffer.allocate(2);
    buffer.order(byteOrder);
    buffer.asShortBuffer().put(shortVal);
    return buffer.array();
}

/**
 * 取两个字节的byte数组所代表的short值
 *
 * @param bytes     byte[]
 * @param byteOrder ByteOrder 大小端模式
 * @return short
 */
public static short bytes2short(byte[] bytes, ByteOrder byteOrder) {
    ByteBuffer buffer = ByteBuffer.wrap(bytes);
    buffer.order(byteOrder);
    return buffer.getShort();
}

/**
 * 将byte[]转为Byte[]
 *
 * @param array byte[]
 * @return Byte[]
 */
public static Byte[] bytes2Bytes(byte[] array) {
    if (null == array) {
        return null;
    }
    Byte[] bytes = new Byte[array.length];
    for (int i = 0; i < array.length; i++) {
        bytes[i] = array[i];
    }
    return bytes;
}

你可能感兴趣的:(short与byte[]、int与byte[]互转(通过ByteBuffer实现))