【发布时间】:2011-02-07 10:43:49
【问题描述】:
我想将一个字符串写入流(本例中为 MemoryStream)并逐个读取字节。
stringAsStream = new MemoryStream();
UnicodeEncoding uniEncoding = new UnicodeEncoding();
String message = "Message";
stringAsStream.Write(uniEncoding.GetBytes(message), 0, message.Length);
Console.WriteLine("This:\t\t" + (char)uniEncoding.GetBytes(message)[0]);
Console.WriteLine("Differs from:\t" + (char)stringAsStream.ReadByte());
我得到的(不想要的)结果是:
This: M
Differs from: ?
它看起来好像没有被正确读取,因为“消息”的第一个字符是“M”,它在从 UnicodeEncoding 实例获取字节时有效,但在从流。
我做错了什么?
更大的图景:我有一个算法可以处理流的字节,我希望尽可能通用并适用于任何流。我想将 ASCII 字符串转换为 MemoryStream,或者使用另一种方法将字符串作为流处理。有问题的算法将适用于 Stream 的字节。
【问题讨论】:
-
您要从流中一一读取字节或字符吗?请注意 byte != char 作为您的编码是 Unicode。
-
是的,我愿意。字节将是 char,因为我将阅读 ASCII 文档。在我的情况下使用 uniEncoding 以外的东西会更好吗?
-
我按要求添加了更大的图片。
-
我用一个代码示例更新了我的答案,它可能对你更有效。
-
谢谢大家的帮助!很抱歉从一开始就没有包括更大的图景,因为在这种情况下这是必要的。所有答案都提供了价值,所以至少你们都得到了我的支持。 :)