为什么当使用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)