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中我使用了字节缓冲区。但是我应该为 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 回答