All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sghd.common.utils.lang.ByteUtils Maven / Gradle / Ivy

The newest version!
package com.sghd.common.utils.lang;

/**
 * Byte 工具类
 * @author frank
 */
public final class ByteUtils {
	
	/**
	 * 将 byte[4] 转换为 int
	 * @param array
	 * @return
	 */
    public static final int intFromByte(byte[] array) {
        return intFromByte(array, 0);
    }

    /**
     * 将 byte[] 中指定位置开始的4个 byte 转换为 int
     * @param array
     * @param offset 开始位置
     * @return
     */
    public static final int intFromByte(byte[] array, int offset) {
        return array[offset] << 24 | 
        	(array[offset + 1] & 0xFF) << 16 | 
        	(array[offset + 2] & 0xFF) << 8 | 
        	(array[offset + 3] & 0xFF);
    }

    /**
     * 将 int 值转换 byte[4]
     * @param number
     * @return
     */
    public final static byte[] intToByte(int number) {
        return intToByte(number, new byte[4], 0);
    }

    /**
     * 将 int 值转换到 byte[] 中的指定位置开始的4个 byte 元素中
     * @param number
     * @param array
     * @param offset 开始位置
     * @return
     */
    public final static byte[] intToByte(int number, byte[] array, int offset) {
        array[offset + 3] = (byte) number;
        array[offset + 2] = (byte) (number >> 8);
        array[offset + 1] = (byte) (number >> 16);
        array[offset] = (byte) (number >> 24);
        return array;
    }

    /**
	 * 将 byte[8] 转换为 long
	 * @param array
	 * @return
	 */
	public static long longFromByte(byte[] b) {
		return longFromByte(b, 0);
	}

    /**
     * 将 byte[] 中指定位置开始的8个 byte 转换为 long
     * @param array
     * @param offset 开始位置
     * @return
     */
	public static long longFromByte(byte[] array, int offset) {
		long s0 = array[offset] & 0xFF;
		long s1 = array[offset + 1] & 0xFF;
		long s2 = array[offset + 2] & 0xFF;
		long s3 = array[offset + 3] & 0xFF;
		long s4 = array[offset + 4] & 0xFF;
		long s5 = array[offset + 5] & 0xFF;
		long s6 = array[offset + 6] & 0xFF;
		long s7 = array[offset + 7] & 0xFF;
		return s0 << 56 | s1 << 48 | s2 << 40 | s3 << 32 | s4 << 24 | s5 << 16 | s6 << 8 | s7;
	}

    /**
     * 将 long 值转换 byte[8]
     * @param number
     * @return
     */
	public static byte[] longToByte(long number) {
		return longToByte(number, new byte[8], 0);
	}

    /**
     * 将 long 值转换到 byte[] 中的指定位置开始的4个 byte 元素中
     * @param number
     * @param array
     * @param offset 开始位置
     * @return
     */
    public final static byte[] longToByte(long number, byte[] array, int offset) {
        array[offset + 7] = (byte) number;
        array[offset + 6] = (byte) (number >> 8);
        array[offset + 5] = (byte) (number >> 16);
        array[offset + 4] = (byte) (number >> 24);
        array[offset + 3] = (byte) (number >> 32);
        array[offset + 2] = (byte) (number >> 40);
        array[offset + 1] = (byte) (number >> 48);
        array[offset] = (byte) (number >> 56);
        return array;
    }

	/**
	 * 将 byte[2] 转换为 short
	 * @param array
	 * @return
	 */
    public static final short shortFromByte(byte[] array) {
        return shortFromByte(array, 0);
    }

    /**
     * 将 byte[] 中指定位置开始的2个 byte 转换为 short
     * @param array
     * @param offset 开始位置
     * @return
     */
    public static final short shortFromByte(byte[] array, int offset) {
        return (short) ((array[offset] & 0xFF) << 8 | (array[offset + 1] & 0xFF));
    }

    /**
     * 将 short 值转换 byte[2]
     * @param number
     * @return
     */
	public final static byte[] shortToByte(short number) {
		 return shortToByte(number, new byte[2], 0);
	}

    /**
     * 将 short 值转换到 byte[] 中的指定位置开始的4个 byte 元素中
     * @param number
     * @param array
     * @param offset 开始位置
     * @return
     */
    public final static byte[] shortToByte(short number, byte[] array, int offset) {
        array[offset + 1] = (byte) number;
        array[offset] = (byte) (number >> 8);
        return array;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy