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

为什么当使用BinaryFormatter将Int32转换为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

最佳答案 BinaryFormatter在序列化时添加了更多信息,如对象来自的版本,文化和程序集.

要获得一个4字节的数组,你需要使用BitConverter.GetBytes(42),然后再使用BitConverter.ToInt32(bytes, 0)

点赞