首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StreamReader返回("")

StreamReader返回("")
EN

Stack Overflow用户
提问于 2019-12-24 16:24:13
回答 2查看 80关注 0票数 1

我从MemoryStream中读取数据,然后将其转换回字符串,但是值是("")。我阅读了有关StreamReader的微软文档,但不完全理解我需要做些什么来避免这种情况。

这是我的代码:

代码语言:javascript
复制
byte[] bytee = Encoding.UTF8.GetBytes(user);
MemoryStream stream = new MemoryStream(bytee );

MemoryStream original =  Encryption.SymmetricEncrypt(stream);

StreamReader reader = new StreamReader(original);
reader.ReadToEnd();
stream.Seek(0, SeekOrigin.Begin);
string text = reader.ReadToEnd();
user = text;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-24 17:51:29

这里有两个问题:

  • 流和读取器
  • 的相对位置,无论内容是否实际上是文本

后者是一个更大的问题;大多数密码API都不是基于文本的,所以使用文本阅读器是错误的。由于这是一个MemoryStream,所以我们有另一个可以一次性解决这两个问题的选项:

  • 访问原始缓冲区,并对二进制有效载荷

进行编码。

代码:

代码语言:javascript
复制
string s = Convert.ToBase64String(
    original.GetBuffer(), 0, (int)original.Length);

要扭转这种情况,请使用Convert.FromBase64String,并在新MemoryStream的构造函数中使用byte[]

票数 1
EN

Stack Overflow用户

发布于 2019-12-24 16:34:11

您可以简单地这样做:

代码语言:javascript
复制
string text = reader.ReadToEnd();

并移除

代码语言:javascript
复制
reader.ReadToEnd();
 stream.Seek(0, SeekOrigin.Begin);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59471347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档