java long放在数组_Java:将long型数组有效地转换为字节型数组

我有多个要写入磁盘的多头数组.最有效的磁盘I / O功能采用字节数组,例如:

FileOutputStream.write(byte[] b, int offset, int length)

…所以我想首先将long []转换为byte [](每个long 8个字节).我正在努力寻找一种干净的方法来做到这一点.

似乎不允许直接类型转换:

ConversionTest.java:6: inconvertible types

found : long[]

required: byte[]

byte[] byteArray = (byte[]) longArray;

^

通过遍历数组很容易进行转换,例如:

ByteBuffer bytes = ByteBuffer.allocate(longArray.length * (Long.SIZE/8));

for( long l: longArray )

{

bytes.putLong( l );

}

byte[] byteArray = bytes.array();

…但是,这似乎远比简单地将long []视为一系列字节有效.

有趣的是,在读取文件时,很容易使用Buffers将字节[]转换为long:

LongBuffer longs = ByteBuffer.wrap(byteArray).asLongBuffer();

…但是我似乎找不到找到相反方向的功能.

我知道从长到字节转换时有字节顺序的注意事项,但我相信我已经解决了这些问题:我正在使用上面显示的Buffer框架,无论本机字节顺序如何,该框架默认为big endian.

你可能感兴趣的:(java,long放在数组)