1

2つのショートを含む4バイトのバイト配列が必要です。私は今これを持っています:

MemoryStream str = new MemoryStream();
using (BinaryWriter writer = new BinaryWriter(stream)) {
     writer.Write((short) printscreen.Width);
     writer.Write((short) printscreen.Height);
}
byte[] bytes = str.ToArray();

Javaではbytebufferを使用しました。しかし、C#には何を使用すればよいですか?

このバイトをソケットを介してJavaサーバーに送信します。Javaコード:

byte[] data = new byte[in.available()];
in.read(data);
ByteBuffer buffer = ByteBuffer.wrap(data);
System.out.println(buffer.getShort());
4

1 に答える 1

3

Javaの ByteBufferクラスに関するドキュメントから:

プリミティブ値は、バッファの現在のバイト順序に従ってバイトのシーケンスに(またはそこから)変換されます。これは、orderメソッドを介して取得および変更できます。特定のバイトオーダーは、ByteOrderクラスのインスタンスによって表されます。バイトバッファの最初の順序は常にBIG_ENDIANです。

.NETの BinaryWriter.Write(short)メソッドのドキュメントから:

BinaryWriterは、このデータ型をリトルエンディアン形式で格納します。

BinaryWriterは変更できないため、ByteBufferで使用されるバイト順序を変更する必要があります。

buffer.order(ByteOrder.LITTLE_ENDIAN);
于 2013-01-21T19:57:04.180 に答える