gpt4 book ai didi

c# - 将一个 UTF8 编码数据的内存流写入另一个 C# 的末尾

转载 作者:太空宇宙 更新时间:2023-11-03 21:41:25 25 4
gpt4 key购买 nike

我试图将一个内存流的内容附加到另一个内存流的内容,我知道这两个内存流都包含 UTF8 编码的数据,并且在我将组合的内存流转换回来时得到一个 UTF8 字符串。但它不起作用 => 第二个内存流被附加为垃圾(或者至少,它不会通过 StreamReader 返回)。可能发生了什么?

我设置了以下 linqpad 脚本来重现我的问题:

string one = "first memorystream";
string two = ", and the second";

MemoryStream ms = new MemoryStream();
MemoryStream ms2 = new MemoryStream();

byte[] oneb = Encoding.UTF8.GetBytes(one);
byte[] twob = Encoding.UTF8.GetBytes(two);

ms.Write(oneb, 0, oneb.Length);
ms2.Write(twob, 0, twob.Length);

ms.Length.Dump();
ms2.Length.Dump();

ms.Write(ms2.GetBuffer(), (int)ms.Length, (int)ms2.Length);
ms.Length.Dump();

ms.Position = 0;

StreamReader rdr = new StreamReader(ms, Encoding.UTF8);
rdr.ReadToEnd().Dump();

结果是:

18
16
34
first memorystream□□□□□□□□□□□□□□□□

那么,问题是为什么不是“第一个内存流,第二个”?

我做错了什么?

最佳答案

更改自ms.Write(ms2.GetBuffer(), (int)ms.Length, (int)ms2.Length);

ms.Write(ms2.GetBuffer(), 0, (int)ms2.Length);

关于c# - 将一个 UTF8 编码数据的内存流写入另一个 C# 的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19107137/

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