2009-08-11 8 views
2

Ich versuche, ein Byte-Array in C# zu formatieren, indem Sie einen Code aus Java portieren. In Java werden die Methoden "buf.putIntInt (value);", buf.putShort, buf.putDouble, (usw.) verwendet. Ich weiß jedoch nicht, wie ich das auf C# portieren soll. Ich habe versucht, die MemoryStream-Klasse, aber es gibt keine Methode, um einen bestimmten Typ am Ende des Byte-Arrays zu setzen.Äquivalent von Java "ByteBuffer.putType()" in C#

Frage: Was entspricht Java "ByteBuffer.putType (Wert)" in C#? Danke!

Antwort

7

Sie können ein verwenden BinaryWriter und Ihr 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

Vielen Dank, ich werde diese Lösung am Ende verwenden :) – Lazlo

+0

Die meisten Ihrer Variablennamen haben 6 Buchstaben in ihnen, aber ein paar nicht. Meine OCD tritt ein und ich möchte sie fast reparieren ... –

0

Sie möchten die Klasse BitConverter verwenden. Der Hauptunterschied besteht darin, dass diese Methoden ein Array von Bytes zurückgeben, anstatt ein vorhandenes Array zu ändern.

(Dies ist ein Ersatz für die spezifischen Methoden erwähnt, für einen Austausch der gesamten ByteBuffer Klasse, die anderen Antworten sehen.)

5

die BinaryWriter Klasse Versuchen:

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

Wir beide genießen 3 Dinge zu schreiben, einschließlich Hallo. – user7116

+0

Vielen Dank dafür, es ist genau das, was ich gesucht habe :). Wie kann ich jedoch nach der Verwendung des Binärschreibers zu einem Byte-Array zurückkehren? – Lazlo

+0

Wenn der binäre Writer um einen 'MemoryStream' gewickelt ist, können Sie' ToArray' darauf aufrufen und ein Byte-Array erhalten. –