2009-08-11 1 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 자의 글자가 있지만 대부분의 글자는 없습니다. 내 강박증이 시작되고 거의 그들을 고치고 싶습니다 ... –

0

BitConverter 클래스를 사용하고 싶습니다. 가장 큰 차이점은 이러한 메서드는 기존 배열을 변경하는 대신 바이트 배열을 반환한다는 것입니다.

는 (이 언급 한 구체적인 방법을 대신, 전체의 ByteBuffer 클래스의 교체, 다른 대답을 참조하십시오.)

5

BinaryWriter 클래스보십시오 :

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

우리 모두 Hello를 포함하여 3 가지를 작성하는 것을 즐깁니다. – user7116

+0

고마워, 정확히 내가 뭘 찾고 있었는지. :) 그러나 바이너리 작성기를 사용한 후에 어떻게 바이트 배열로 돌아갈 수 있습니까? – Lazlo

+0

바이너리 라이터가'MemoryStream'을 감싸는 경우,'ToArray'를 호출하여 바이트 배열을 얻을 수 있습니다. –