【发布时间】:2021-05-12 19:04:42
【问题描述】:
我已经尝试了很长时间,但它一直给我一个错误。我有一个应该代表 nbt 文档的字节数组。我想将其转换为带有库的 c# 对象:fNbt。
这是我的代码:
byte[] buffer = Convert.FromBase64String(value);
byte[] decompressed;
using (var inputStream = new MemoryStream(buffer))
{
using var outputStream = new MemoryStream();
using (var gzip = new GZipStream(inputStream, CompressionMode.Decompress, leaveOpen: true))
{
gzip.CopyTo(outputStream);
}
fNbt.NbtReader reader = new fNbt.NbtReader(outputStream, true);
var output = reader.ReadValueAs<AuctionItem>(); //Error: Value already read, or no value to read.
return output;
}
当我尝试这个时,它可以工作:
decompressed = outputStream.ToArray();
outputStream.Seek(0, SeekOrigin.Begin);
outputStream.Read(new byte[1000], 0, decompressed.Count() - 1);
但是当我尝试这个时,它没有:
outputStream.Seek(0, SeekOrigin.Begin);
fNbt.NbtReader reader = new fNbt.NbtReader(outputStream, true);
reader.ReadValueAs<AuctionItem>();
【问题讨论】:
-
这个问题够不够好?抱歉,我是 stackoverflow 的新手。
-
“它似乎不起作用” 不是问题描述,这是任何人在这里发帖的唯一原因,所以这只是噪音。如果这是评论中的异常消息,它不是很明显。这确实应该是标题,以便其他遇到此问题的人可以找到它。
-
此站点是一个 wiki,您的问题是一篇关于您遇到的问题的文章。当问题是例外时,这应该是帖子的焦点。编写代码的原因可能对您很重要,但对于遇到相同问题的未来读者(他们可能出于完全不同的原因处理相同的问题)而言并不重要。
-
反正我的水晶球说
outputStream需要重置到开头。您刚刚写信给它,当前位置现在位于末尾。NbtReader如果在最后,就没有什么可读的了。 -
我该如何解决这个问题!?!?!?另外我会重新制作标题,我才意识到我是智障