如何在没有XML元标记的情况下序列化二进制数据?

时间:2019-04-16 16:47:10

标签: c# serialization

我想混淆二进制数组byte[]中的某些二进制或文本数据,我能够完成转换为所需的字符串的操作,但是XmlSerializer的输出包含了额外的信息。是否可以使用其他序列化程序来转换我的数据而无需附加XML标签?如果以后需要反序列化,则将包含必要的标签。

byte[] baTest = new byte[256];
        for (int i = 0; i < 256; i++)
            baTest[i] = (byte) (i & 0xff);
        string MyTestString = ReadableXMLBinary(baTest);
        MessageBox.Show("My String is:\n" + MyTestString);

static public string ReadableXMLBinary(byte[] baIn)
        {
            StringWriter s = new StringWriter();
            XmlSerializer xser = new XmlSerializer(typeof( byte[]));
            xser.Serialize(s, baIn);
            return s.ToString();
        }

哪个输出:

<?xml version="1.0" encoding="utf-16"?><base64Binary>AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==</base64Binary>"

基本上,我希望<base64Binary>标签之间的所有内容。 我知道我可以毫不费力地剥离文本,但我认为可能有人提出了一种干净的解决方案。

1 个答案:

答案 0 :(得分:1)

您似乎根本不需要XML?

如果是这种情况,请使用: SELECT OBJECT_NAME(f.parent_object_id) TableName, COL_NAME(fc.parent_object_id, fc.parent_column_id) ColName FROM sys.foreign_keys AS f INNER JOIN sys.foreign_key_columns AS fc ON f.OBJECT_ID = fc.constraint_object_id INNER JOIN sys.tables t ON t.OBJECT_ID = fc.referenced_object_id WHERE OBJECT_NAME (f.referenced_object_id) = 'YourTableName'

并转换回: string s = Convert.ToBase64String(baIn);