Writing String to Stream and reading it back does not work

Posted by Binary255 on Stack Overflow See other posts from Stack Overflow or by Binary255
Published on 2010-04-13T12:53:24Z Indexed on 2010/04/13 14:22 UTC
Read the original article Hit count: 424

Filed under:
|
|

I want to write a String to a Stream (a MemoryStream in this case) and read the bytes one by one.

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());

The (undesired) result I get is:

This:         M
Differs from: ?

It looks like it's not being read correctly, as the first char of "Message" is 'M', which works when getting the bytes from the UnicodeEncoding instance but not when reading them back from the stream.

What am I doing wrong?


The bigger picture: I have an algorithm which will work on the bytes of a Stream, I'd like to be as general as possible and work with any Stream. I'd like to convert an ASCII-String into a MemoryStream, or maybe use another method to be able to work on the String as a Stream. The algorithm in question will work on the bytes of the Stream.

© Stack Overflow or respective owner

Related posts about c#

Related posts about stream