2009-08-11 6 views
2

J'essaye de formater un tableau d'octets en C#, en portant un code à partir de Java. En Java, les méthodes "buf.putInt (value);", buf.putShort, buf.putDouble, (et ainsi de suite) sont utilisées. Cependant je ne sais pas comment porter ceci à C#. J'ai essayé la classe MemoryStream, mais il n'y a aucune méthode pour mettre un type spécifique à la fin du tableau d'octets. Question: Quel est l'équivalent de "ByteBuffer.putType (value)" de Java en C#? Merci!Equivalent de Java "ByteBuffer.putType()" dans C#

Répondre

7

Vous pouvez utiliser un BinaryWriter et votre MemoryStream:

+0

Merci, je vais utiliser cette solution à la fin :) – Lazlo

+0

La plupart de vos noms de variables ont 6 lettres mais quelques-uns ne le font pas. Mon OCD arrive et j'ai presque envie de les réparer ... –

0

Vous voudrez utiliser la classe BitConverter. La principale différence est que ces méthodes retournent un tableau d'octets au lieu de modifier un tableau existant.

(Ceci est un remplacement pour les méthodes spécifiques mentionnées, pour un remplacement de toute la classe ByteBuffer, voir les autres réponses.)

5

Essayez la classe BinaryWriter:

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

Nous aimons écrire 3 choses, y compris Hello. – user7116

+0

Merci pour cela, c'est exactement ce que je cherchais :). Cependant, comment puis-je revenir à un tableau d'octets après avoir utilisé l'éditeur binaire? – Lazlo

+0

Si l'éditeur binaire est enroulé autour d'un 'MemoryStream', vous pouvez appeler' ToArray' et obtenir un tableau d'octets. –