![](/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.