二进制格式化程序生成比预期更大的数组

时间:2016-01-08 16:48:44

标签: c#

为什么在使用BinaryFormatterInt32转换为byte[]时,我得到的数据长度不是4个字节?

static class Program
{
    static void Main(string[] args)
    {
        var bf = new BinaryFormatter();

        using(var ms = new MemoryStream())
        {
            bf.Serialize(ms, 42);

            Console.WriteLine($"{ms.ToArray().Length} bytes");
        }

        Console.ReadLine();
    }
}

输出:

54 bytes

1 个答案:

答案 0 :(得分:2)

BinaryFormatter在序列化时会添加更多信息,例如对象来自的版本,文化和程序集。

要获得4字节数组,您需要使用BitConverter.GetBytes(42),然后返回使用BitConverter.ToInt32(bytes, 0)