我正在测试BinaryFormatter,看看它对我有用,我有一个简单的问题:
当它与字符串HELLO一起使用时,我将MemoryStream转换为数组,它给出了29个维度,其中五个是维度末尾的实际数据:
BinaryFormatter bf = new BinaryFormatter(); MemoryStream ms = new MemoryStream(); byte[] bytes; string originalData = "HELLO"; bf.Serialize(ms,originalData); ms.Seek(0,0); bytes = ms.ToArray();
回报
- bytes {Dimensions:[29]} byte[] [0] 0 byte [1] 1 byte [2] 0 byte [3] 0 byte [4] 0 byte [5] 255 byte [6] 255 byte [7] 255 byte [8] 255 byte [9] 1 byte [10] 0 byte [11] 0 byte [12] 0 byte [13] 0 byte [14] 0 byte [15] 0 byte [16] 0 byte [17] 6 byte [18] 1 byte [19] 0 byte [20] 0 byte [21] 0 byte [22] 5 byte [23] 72 byte [24] 69 byte [25] 76 byte [26] 76 byte [27] 79 byte [28] 11 byte
有没有办法只返回编码为字节的数据而没有所有无关的信息?
解决方法
所有这些无关的信息告诉另一个BinaryFormatter(将反序列化对象)正在反序列化的对象类型(在本例中为System.String).根据类型,它包含重建对象所需的其他信息(例如,如果它是StringBuilder,则容量也将在那里编码.
如果你想要做的就是将一个字符串填充到MemoryStream缓冲区中:
using (MemoryStream ms = new MemoryStream()) using (TextWriter writer = new StreamWriter(ms)) { writer.Write("HELLO"); writer.Flush(); byte[] bytes = ms.ToArray(); }
原文地址:https://www.jb51.cc/csharp/97654.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。