为什么在使用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
答案 0 :(得分:2)
BinaryFormatter在序列化时会添加更多信息,例如对象来自的版本,文化和程序集。
要获得4字节数组,您需要使用BitConverter.GetBytes(42)
,然后返回使用BitConverter.ToInt32(bytes, 0)