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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值