C# 将哈希表序列化为字符串并返回

C# 将哈希表序列化为字符串并返回,c#,serialization,C#,Serialization,我试图将哈希表序列化为字符串,然后再返回哈希表,但反序列化代码一直失败 要反序列化: byte[] bytes = System.Text.Encoding.Unicode.GetBytes(hash.value); System.IO.MemoryStream ms = new System.IO.MemoryStream(); ms.Write (bytes,0,bytes.Length); ms.Seek(0,System.IO.SeekOrigin.Begin); System.Run

我试图将哈希表序列化为字符串,然后再返回哈希表,但反序列化代码一直失败

要反序列化:

byte[] bytes = System.Text.Encoding.Unicode.GetBytes(hash.value);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
ms.Write (bytes,0,bytes.Length);
ms.Seek(0,System.IO.SeekOrigin.Begin);

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
Hashtable h = (Hashtable)bf.Deserialize(ms);
要序列化:

MemoryStream ms = new MemoryStream();
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
bf.Serialize(ms, hash);
byte[] bt = ms.ToArray();
this.value=System.Text.Encoding.Unicode.GetString(bt);
这是我在使用上述代码时遇到的错误:
EndOfStreamException:无法读取超过流结尾的内容。

但如果有人有更有效的方法,我会洗耳恭听

  • Unicode编码是个问题。序列化字节由随机字节组成,包括unicode编码的illegel字节。使用System.Convert.ToBase64StringSystem.Convert.FromBase64String而不是编码.Unicode.GetString编码.Unicode.GetBytes

  • 但是为什么要用字符串作为媒介呢?字节数组足以保存和加载数据

  • Unicode编码是个问题。序列化字节由随机字节组成,包括unicode编码的illegel字节。使用System.Convert.ToBase64StringSystem.Convert.FromBase64String而不是编码.Unicode.GetString编码.Unicode.GetBytes

  • 但是为什么要用字符串作为媒介呢?字节数组足以保存和加载数据


  • 我已尝试转换为base64字符串/从base64字符串转换为base64字符串,但在FromBase64String
    FormatException上出现以下错误:长度无效。
    由于我正在使用的框架的限制,我不得不使用字符串作为媒介(这是插件的一部分)。由于某种原因,代码的序列化部分总是返回长度为3 0的字符串。什么?真奇怪。如果正确使用ToBase64String,结果字符串的长度应该是4的倍数。我同意,在反复查看同一代码几个小时后,我发现框架没有返回正确的值是一个错误:p谢谢你的帮助!:)我已尝试转换为base64字符串/从base64字符串转换为base64字符串,但在FromBase64String
    FormatException上出现以下错误:长度无效。
    由于我正在使用的框架的限制,我不得不使用字符串作为媒介(这是插件的一部分)。由于某种原因,代码的序列化部分总是返回长度为3 0的字符串。什么?真奇怪。如果正确使用ToBase64String,结果字符串的长度应该是4的倍数。我同意,在反复查看同一代码几个小时后,我发现框架没有返回正确的值是一个错误:p谢谢你的帮助!:)