我需要一个包含4个字节的字节数组,其中包含2个短路。我现在有这个:
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());
答案 0 :(得分:3)
来自Java ByteBuffer Class的文档:
根据缓冲区的当前字节顺序将原始值转换为(或来自)字节序列,可以通过顺序方法检索和修改。特定的字节顺序由ByteOrder类的实例表示。 字节缓冲区的初始顺序始终为BIG_ENDIAN。
来自.NET BinaryWriter.Write(short) Method的文档:
BinaryWriter以小端格式存储此数据类型。
由于无法更改BinaryWriter,因此需要更改ByteBuffer使用的字节顺序:
buffer.order(ByteOrder.LITTLE_ENDIAN);