【问题标题】:C# Binary serialization into a variableC#二进制序列化成变量
【发布时间】:2019-02-10 07:14:15
【问题描述】:

我有一段代码使用 XmlSerializer 将字符串序列化为 XML。我想将相同的字符串序列化为二进制而不是 xml,我尝试了不同的代码但都没有工作,如果可能,请重写以下代码以输出我序列化的二进制并将其存储在变量中。

public  class SerialTest
{
    public static void Main(string[] s)
    {
        String test = "ASD";
        string serializedData = string.Empty;                   

        XmlSerializer serializer = new XmlSerializer(test.GetType());
        using (StringWriter sw = new StringWriter())
        {
            serializer.Serialize(sw, test);
            serializedData = sw.ToString();
            Console.WriteLine(serializedData);
            Console.ReadLine();
        }
    }
}

我真正想要的是有一个序列化对象的代码,并将序列化的二进制文件作为变量而不是 XML 的输出提供给我。

【问题讨论】:

  • @GabrielCostin,是的,但它将结果存储在文件中,我不能将它存储在变量中。
  • 您能更清楚地了解您的要求吗?你想要真正的二进制数据 (byte[]) 还是十六进制 (string) ?并且也许还指出您需要它的用途。

标签: c# serialization xml-serialization


【解决方案1】:

如果您需要将二进制序列化输出存储在string 中,您可以使用ToBase64String,如下所示。

String test = "ASD";
string serializedData = string.Empty;
MemoryStream memoryStream = new MemoryStream();
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, test);
memoryStream.Flush();
memoryStream.Position = 0;
serializedData = Convert.ToBase64String(memoryStream.ToArray());

【讨论】:

  • 谢谢,我怎样才能输出为 Hex 而不是 base64string?
  • 你可以试试Encoding.Default.GetString(memoryStream.ToArray())
  • 输出字节数组的更多细节可以查看stackoverflow.com/questions/10940883/…
猜你喜欢
  • 2016-07-27
  • 2017-10-18
  • 1970-01-01
  • 2010-12-17
  • 2015-09-17
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
相关资源
最近更新 更多