gpt4 book ai didi

c# - BinaryFormatter 与 MemoryStream 问题

转载 作者:太空狗 更新时间:2023-10-29 21:00:04 25 4
gpt4 key购买 nike

我正在测试 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,则 Capacity 也会在其中编码。

如果您只想将字符串填充到 MemoryStream 缓冲区中:

        using (MemoryStream ms = new MemoryStream())
using (TextWriter writer = new StreamWriter(ms))
{
writer.Write("HELLO");
writer.Flush();

byte[] bytes = ms.ToArray();
}

关于c# - BinaryFormatter 与 MemoryStream 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2953190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com