2009-08-11 22 views
2

Javaからコードを移植してC#でバイト配列をフォーマットしようとしています。 Javaでは、メソッド "buf.putInt(value);"、buf.putShort、buf.putDouble(など)が使用されます。しかし、私はこれをC#に移植する方法を知らない。私はMemoryStreamクラスを試しましたが、バイト配列の最後に特定の型を入れるメソッドはありません。C#でJavaの "ByteBuffer.putType()"に相当する

質問:C#のJavaの "ByteBuffer.putType(value)"に相当するものは何ですか? ありがとう!

答えて

7

あなたが使用することができますBinaryWriterとあなたのMemoryStream:

MemoryStream stream = new MemoryStream(); 
using (BinaryWriter writer = new BinaryWriter(stream)) 
{ 
    writer.Write(myByte); 
    writer.Write(myInt32); 
    writer.Write("Hello"); 
} 

byte[] bytes = stream.ToArray(); 
+0

ありがとうございます、私はこのソリューションを最後に使用します:) – Lazlo

+0

ほとんどの変数名は6文字ですが、ほとんどの文字はそうではありません。私のOCDが蹴ってきて、私はほとんどそれらを修正したい... –

0

あなたはBitConverterクラスを使いたいと思うでしょう。主な違いは、これらのメソッドが既存の配列を変更するのではなく、バイトの配列を返すことです。

(これは、前述の具体的な方法に代わるものであり、全体のByteBufferクラスの交換のために、他の回答を参照してください。)

5

BinaryWriterクラスを試してみてください:

using (var binaryWriter = new BinaryWriter(...)) 
{ 
    binaryWriter.Write(323); 
    binaryWriter.Write(3487d); 
    binaryWriter.Write("Hello"); 
} 
+1

こんにちは、こんにちは。 – user7116

+0

ありがとう、これは私が探していたものです。しかし、バイナリライタを使用した後に、どのようにバイト配列に戻すことができますか? – Lazlo

+0

バイナリライタが 'MemoryStream'をラップすると、' ToArray'を呼び出してバイト配列を得ることができます。 –