C#中与Java的"ByteBuffer.putType()"等效的方法是什么?

4
我正在尝试在C#中格式化一个字节数组,通过移植Java的代码。在Java中,使用方法“buf.putInt(value);”,buf.putShort,buf.putDouble等。然而我不知道如何将其移植到C#。我已经尝试了MemoryStream类,但是没有方法可以在字节数组的末尾放置特定类型。
问题:在C#中,Java的“ByteBuffer.putType(value)”等价于什么? 谢谢!
3个回答

9
你可以使用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();

谢谢,最终我会使用这个解决方案 :) - Lazlo
你的大多数变量名称都有6个字母,但有几个不是。我的强迫症作祟,我几乎想修复它们... - Corey Ogburn

5

尝试使用BinaryWriter类:

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

1
我们都喜欢写三件事情,其中包括“你好”。 - user7116
谢谢您,这正是我在寻找的 : )。不过,在使用二进制写入器后,如何返回到字节数组呢? - Lazlo
如果二进制写入器被包装在一个MemoryStream中,您可以调用其上的ToArray方法并获取一个字节数组。 - John Calsbeek
我感觉很蠢再问一个问题,但是,我该如何将它包装在MemoryStream中? - Lazlo
Lazlo,你可以看到我的回答,了解如何“将其包装在内存流中”(我不觉得编辑Kent的内容是我的职责)。 - user7116

0
你需要使用BitConverter类。主要区别在于这些方法返回一个字节数组,而不是修改现有的数组。
(这是特定方法的替代品;如果要替换整个ByteBuffer类,请参见其他回复。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接