C#のjavax.nio.Buffer.flip()と同等
質問
Javaコードの一部を移植していますが、反転できる必要があります( javax.nio.Buffer.flip()
)。
byte []を使用してデータを格納していますが、Bufferクラスがbyte []を使用しているように、Bufferと同じようにこれらのバイト配列を反転したいです。
ありがとう
解決
ByteBuffer
は、 byte []
(たとえば、 ByteBuffer.wrap
から作成)またはJava以外のヒープメモリ( ByteBuffer.allocateDirect
)。基になる byte []
は、 ByteBuffer.array
で取得できます。ただし、バッファーで flip
および同様のメソッドを呼び出しても、実際のデータは変更されません。代わりに、データに関連付けられたオフセットが変更されます。したがって、 byte
と同等のことは、コードが関連付けているオフセットを変更することです。
他のヒント
.NETには java.nio
パッケージに直接相当するものはありません。非同期IOは通常 Stream.BeginRead
/ EndRead
で処理されますが、実際には同じモデルではありません。何をしようとしているのか教えていただけますか?
編集:あなたがやろうとしていることの低レベルの詳細を提供しましたが、.NETの nio
クラスに相当するものがないため、どちらかは自分でそれらを書く必要があります(不可能ではありませんが、苦痛です)か、別のより高いレベルのタイプを使用する必要があります。たとえば、 MemoryStream
を使用できる場合があります。それに書き込み、最初に戻ってシークします。これは、バイトバッファーを反転するようなビットです。ただし、より高いレベルの目標に関する詳細情報がなければ、それが適切かどうかはわかりません。もっと良い方法があるかもしれません。