byte和long类型的互相转换

看了些博客,基本有3种方法可以实现这需求,不过只要效率不是相差太大,会使用一种就够了,条条大路通罗马。这里选择借助java.nio.ByteBuffer来实现这个转换,因为只要将byte[]转换为ByteBuffer就可以实现所有primitive类型的数据读取。

参考代码如下:

public class TestMain {
    //分配缓冲区,单位为字节,long类型占8字节,所以设置为8
    private static ByteBuffer buffer = ByteBuffer.allocate(8);

    //long类型转byte[]
    public static byte[] longToBytes(long x) {
        buffer.putLong(0, x);
        return buffer.array();
    }

    //byte[]转long类型
    public static long bytesToLong(byte[] bytes) {
        buffer.put(bytes, 0, bytes.length);
        //flip方法将Buffer从写模式切换到读模式,调用flip()方法会将position设回0,从头读起
        buffer.flip();
        return buffer.getLong();
    }

    //测试代码
    public static void main(String[] args) throws Exception {
        long test = 100;
        byte[] bytes = TestMain.longToBytes(test);//输出结果:[B@67117f44
        System.out.println(bytes);
        long test2 = TestMain.bytesToLong(bytes);
        System.out.println(test2);//输出结果:100
    }
}
发布了166 篇原创文章 · 获赞 155 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/104237858