Nat*_*ood 9 java bytearray short
我有一个字节数组,大小为n,它实际上代表了一个n/2大小的数组.在将数组写入磁盘文件之前,我需要通过添加存储在另一个short数组中的偏差值来调整值.在C++中,我只是将字节数组的地址分配给一个短数组的指针,其中转换为short并使用指针算法或使用union.
怎么可能用Java完成 - 我对Java BTW很新.
你可以自己做点苦恼,但我建议你去看看ByteBuffer和ShortBuffer课程.
byte[] arr = ...
ByteBuffer bb = ByteBuffer.wrap(arr); // Wrapper around underlying byte[].
ShortBuffer sb = bb.asShortBuffer(); // Wrapper around ByteBuffer.
// Now traverse ShortBuffer to obtain each short.
short s1 = sb.get();
short s2 = sb.get(); // etc.
Run Code Online (Sandbox Code Playgroud)
您可以使用java.nio.ByteBuffer包装您的字节数组.
byte[] bytes = ...
ByteBuffer buffer = ByteBuffer.wrap( bytes );
// you may or may not need to do this
//buffer.order( ByteOrder.BIG/LITTLE_ENDIAN );
ShortBuffer shorts = buffer.asShortBuffer( );
for ( int i = 0, n=shorts.remaining( ); i < n; ++i ) {
final int index = shorts.position( ) + i;
// Perform your transformation
final short adjusted_val = shortAdjuster( shorts.get( index ) );
// Put value at the same index
shorts.put( index, adjusted_val );
}
// bytes now contains adjusted short values
Run Code Online (Sandbox Code Playgroud)