当我试图将一个对象转换为字节数组时,我得到一个奇怪的数组。 这是代码:对象到字节的转换
using (MemoryStream ms = new MemoryStream())
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, obj);
Console.WriteLine(ByteArrayToString(ms.ToArray()));
}
//int obj = 50;
//string ByteArrayToString(byte[] byteArr) the functionality of this method is pretty obvious
结果是这样的:
“00 01 00 00 00 FF FF FF FF 01 00 00 00 00 00 00 00 04 01 00 00 00 0C 53 79 73 74 65 6D 2E 49 6E 74 33 32 01 00 00 00 07 6D 5F 76 61 6C 75 65 00 08 32 00 00 00 0B“
有人可以向我解释为什么?:)最佳结果应该只有”32 00 00 00“。
这正是我期望发生的事情。您将“MemortyStream”对象而不是整数变量“obj”转换为“byte”数组。有一个'整数'字节[]'我建议你使用它。我不得不把这个问题投下来,因为看起来你没有时间试图找出答案。 –
@Rhhound:你的解释没有任何意义,因为OP显然不是*序列化'MemoryStream'。请参阅['BinaryFormatter.Serialize'](http://msdn.microsoft.com/en-us/library/c5sbs8z9.aspx)。 – user7116