为什么我的十六进制字符串在服务器上完全相同.但在反序列化时是不同的对象
本文关键字:反序列化 是不同 对象 十六进制 我的 字符串 服务器 为什么 | 更新日期: 2023-09-27 18:31:45
在 C# 中序列化对象后,我将其上传到我的数据库,每个十六进制字符串如下所示:
0x0001000000FFFFFFFF01000000000000000C0200000046496E76656E746F72794F626A6563742C2056657273696F6E3D312E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D6E756C6C050100000019496E76656E746F72792E496E76656E746F72794F626A65637404000000
当我反序列化时,我希望每个对象都是相同的(意味着我的代码中的错误)。但它们不是,相反,它们代表正确的唯一对象。
sql 服务器中是否发生了某种指针关联?
序列化方法:
public byte[] serialize()
{
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, this); //NOTE: this refers to a InventoryObject
byte[] returnVal = ms.ToArray();
ms.Close();
return returnVal;
}
反序列化方法:
public static InventoryObject deserialize(byte[] arrBytes)
{
MemoryStream memStream = new MemoryStream();
BinaryFormatter binForm = new BinaryFormatter();
memStream.Write(arrBytes, 0, arrBytes.Length);
memStream.Seek(0, SeekOrigin.Begin);
InventoryObject obj = (Object)binForm.Deserialize(memStream) as InventoryObject;
return obj ;
}
我想通了。SQL Server 2000 不会在查询分析器中向您显示整个十六进制字符串,如果该字符串大于特定长度。因此,我的十六进制字符串实际上是不同的。