为什么字节数组在序列化时会变成乱码?

Why do byte arrays turn to gibberish when serialized?

通过这样的调用传递的数据的原始结构发生了什么:

 MyImg bytes = new MyImg
            {
                Id = 1,
                Img = new byte[] { 1, 0, 5 },
                Text = "hiiiiiii"
            };

        IFormatter formatter2 = new BinaryFormatter();
        using (MemoryStream stream = new MemoryStream())
        {
            formatter2.Serialize(stream, bytes);
            bytes.Img = stream.ToArray();
        }

这里有很多关于如何产生的抽象:

{"id":1,"img":"AAEAAAD/////AQAAAAAAAAAMAgAAAEpNZXNzYWdlQm9hcmRCYWNrZW5kLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJU1lc3NhZ2VCb2FyZEJhY2tlbmQuQ29udHJvbGxlcnMuTXlJbWcDAAAAEzxJZD5rX19CYWNraW5nRmllbGQUPEltZz5rX19CYWNraW5nRmllbGQVPFRleHQ+a19fQmFja2luZ0ZpZWxkAAcBCAICAAAAAQAAAAkDAAAABgQAAAAIaGlpaWlpaWkPAwAAAAMAAAACAQAFCw==","text":"hiiiiiii"}

我只是想了解发生了什么。

serial/deserialization 是通用过程还是 .Net 做的事情与 Java 不同?

您的字节数组在 JSON 中编码为 Base64 字符串,这是确保您的序列化字节不包含不可打印或序列化程序本身不使用的字符的常用方法(例如 <> 在 XML,{} 在 JSON 等)