JavaからC#にコードを移植する必要があります。 Javaコードでは、メソッド "ByteBuffer.flip()"と "ByteBuffer.slice"が使用されていますが、これをどのように翻訳するかわかりません。.NETの "ByteBuffer.flip"& "ByteBuffer.slice"に相当するものは何ですか?
私はこの質問(An equivalent of javax.nio.Buffer.flip() in c#)を読んだことがありますが、回答はありますが、どのように適用するのかわかりません。 Tom Hawtinによると、「現在の位置に制限を設定して、その位置をゼロに設定する」必要があります。これらの値を変更する方法は不明です。 (基本的なロジックを説明することができれば、それは私を助けてくれるはずです:)
ByteBuffer.sliceに関して、私はそれをどのように翻訳するかについての手がかりはありません。
EDIT:それは実際のコードで明確にすることができれば、私はそれを投稿します:
のJava:これまでのところ
ByteBuffer buff;
buff.putShort((short) 0);
buff.put(customArray);
buff.flip();
buff.putShort((short) 0);
ByteBuffer b = buff.slice();
short size = (short) (customFunction(b) + 2);
buff.putShort(0, size);
buff.position(0).limit(size);
、C#.NETでの私の翻訳:
BinaryWriter b = new BinaryWriter(); //ByteBuffer buff;
b.Write((short)0); // buff.putShort((short) 0);
b.Write(paramStream.ToArray()); // buff.put(customArray);
b.BaseStream.SetLength(b.BaseStream.Position); // buff.flip; (not sure)
b.BaseStream.Position = 0; // buff.flip; too (not sure)
b.Write((short)0); // buff.putShort((short) 0)
??? // ByteBuffer b = buff.slice();
// Not done but I can do it, short size = (short) (customFunction(b) + 2);
??? // How do I write at a particular position?
??? // buff.position(0).limit(size); I don't know how to do this
ありがとうございました!
EDIT:Javaドキュメントに基づいてb.BaseStream.SetLength(b.BaseStream.Length);
からb.BaseStream.SetLength(b.BaseStream.Position);
に変更されました。
Quick FYI:これらの同等物は、.NETにあり、C#ではありません。 –
ありがとう:)編集されました。 – Lazlo
ByteBufferにはどのような構造体を使用していますか?リスト、バイト[]など? –
SwDevMan81