![](/img/trans.png)
[英]How to print internet search outputs to visual studio console in C#?
[英]Visual Studio C# - Console outputs incorrect string
当我运行我的程序并打开一个文件时,它会在控制台中打印以下文本:
File opened successfully
System.Linq.Enumerable+<TakeIterator>d__25`1[System.Byte]
第一行是正确的,但第二行是我不明白的。 打算发生的是它应该读取文件的前 4 个字节并将其转换为字符串以打印到控制台,以便我可以看到它正确读取文件头。 这种情况下的预期输出将是“MThd”,即文件类型标识符。
这是我用于创建字符串的代码:
if(fileName != null)
{
byte[] fileBytes = File.ReadAllBytes(fileName);
string header = fileBytes.Take(4).ToString();
Console.WriteLine(header);
}
如果您需要文本文件,请使用ReadAllText
而不是ReadAllBytes
。 如果您想读取字节流并将其解释为字符串,请使用适当的解码方法,例如
var header = System.Text.UTF8Encoding.UTF8.GetString(fileBytes.Take(4));
对于今天的多字节字符集,不再保证一定数量的字节对应一定数量的字符。 这只有在您可以坚持使用 ASCII 编码时才可靠。
var header = System.Text.ASCIIEncoding.ASCII.GetString(fileBytes.Take(4));
byte[].Take() 似乎返回了某种类型的东西
System.Linq.Enumerable+<TakeIterator>d__25``1[System.Byte]
看起来不能直接转换为字符串。
尝试遍历它并将其组件的(字符串)写入控制台。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.