簡體   English   中英

Visual Studio 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM