int[] original = { 1, 2, 3, 4 }, copy;
byte[] bytes;
using (var ms = new MemoryStream())
{
using (var writer = new BinaryWriter(ms))
{
writer.Write(original.Length);
for (int i = 0; i < original.Length; i++)
writer.Write(original[i]);
}
bytes = ms.ToArray();
}
using (var ms = new MemoryStream(bytes))
using (var reader = new BinaryReader(ms))
{
int len = reader.ReadInt32();
copy = new int[len];
for (int i = 0; i < len; i++)
{
copy[i] = reader.ReadInt32();
}
}
私はちょうどストリームw/o BinaryReader
から読んでいましたが個人的には。
実際には、厳密にが、それは私だった場合、私は私のown serializerを使用して、ちょうどなり、話す:これはバッファリングを扱う、エンディアンを知っているだろう、と助けるために可変長符号化を使用しますので、
[ProtoContract]
public class Foo {
[ProtoMember(1, Options = MemberSerializationOptions.Packed)]
public int[] Bar {get;set;}
}
を数字の大部分が巨額でない場合には、膨らみを減らします。
;代わりに20のいるProtobufを経由して6バイト - コースのを私が使用している数字はすべて小さいです) –