質問

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 を使用できる場合があります。それに書き込み、最初に戻ってシークします。これは、バイトバッファーを反転するようなビットです。ただし、より高いレベルの目標に関する詳細情報がなければ、それが適切かどうかはわかりません。もっと良い方法があるかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top