JAVA 中基本数组类型转byte数组

在日常的项目中,我们经常会遇到这样的问题,就是将基本数据类型转化成字节数据,

其实,字节数组是我们经常使用的,包括文件流,以及socket的数据传输,基本都是要求字节数组,虽然大部分人可能都使用应用层协议http,

一般都会使用json作为传输格式,但其实底层传输层还是将这些数据进行了序列化,因此我们应该熟悉这种基本数据类型和字节数组的转化。

当然这种应用场景也是非常的多,比如很多时候我们都希望文件的关键信息存储成字节数组,这样对外不容易解析,虽然存储成二进制也没有问题,

但是直接存储成二进制,在解析上会有一些麻烦,而存储成字节数据,我们很清楚每4个字节组成一个int,这样处理起来相对方便一点,不需要认为约定很多东西

下面就是int和byte[]的转换方式,

public class NumConvert {
    public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(257));
        System.out.println(bytes2Int(int2Bytes(257)));
    }

    /**
     * 转化过程一定是高位在前
     * @param num
     * @return
     */
    public static byte[] int2Bytes(int num) {
        byte[] result = new byte[4];
        result[0] = (byte)((num >>> 24) & 0xff);
        result[1] = (byte)((num >>> 16) & 0xff );
        result[2] = (byte)((num >>> 8) & 0xff );
        result[3] = (byte)((num >>> 0) & 0xff );
        return result;
    }

    public static int bytes2Int(byte[] bytes ) {
        int int1 = (bytes[0]&0xff) << 24;
        int int2 = (bytes[1]&0xff) << 16;
        int int3 = (bytes[2]&0xff) << 8;
        int int4 = (bytes[3]&0xff);
        return int1|int2|int3|int4;
    }
}

 

posted @ 2020-07-11 16:48  倾慕已久  阅读(2037)  评论(0编辑  收藏  举报