我需要為我的家庭作業做一些藝術品。給定的是一個位元組陣列,我需要將其顯示為 7 行,每行 11 個字符,但我真的不知道如何構造它,此外,我正在收到一個 System.IO.EndOfStreamExeption(它連接到而部分)。最后,我很確定它應該在控制臺上顯示“C#”。
internal class Program
{
public void ESAIn(string Path)
{
byte[] array = { 32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32,
32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
67, 32, 32, 32, 32, 32, 32, 35, 32, 35, 32,
67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32 };
FileStream stream = File.Open(Path, FileMode.Truncate, FileAccess.ReadWrite);
stream.Write(array, 0, array.Length);
stream.Close();
}
public void ESAOut(string Path)
{
BinaryReader reader = new BinaryReader(File.Open(Path, FileMode.Open));
var count = 0;
int b;
while ((b = reader.ReadByte()) > -1)
{
Console.Write((char)b);
if (count > 0 && ( count % 11) == 0)
{
Console.WriteLine();
}
}
}
uj5u.com熱心網友回復:
如果您只想將其保存byte[]到檔案中,請呼叫File.WriteAllBytes
byte[] array = ...
File.WriteAllBytes("myFile.dat", array);
但是您似乎想將每個11位元組都轉換為一個string,然后才將這些字串保存到一個檔案中。我們可以做到這一點quering array與幫助的Linq:
using System.IO;
using System.Linq;
...
byte[] array = ...
var lines = array
.Select((value, index) => new { value, index })
.GroupBy(pair => pair.index / 11, pair => pair.value)
.Select(group => string.Concat(group.Select(b => (char)b)));
File.WriteAllLines("myFile.txt", lines);
現在myFile.txt包含
CC # #
C C # #
C #####
C # #
C #####
C C # #
CC # #
編輯:如果您想array按原樣存盤:
File.WriteAllBytes("myFile.dat", array);
要加載檔案并顯示藝術可以用File.ReadAllBytes得到byte[],然后LINQ的有一個文本表示:
string art = string.Join(Environment.NewLine, File
.ReadAllBytes("myFile.dat")
.Select((value, index) => new { value, index })
.GroupBy(pair => pair.index / 11, pair => pair.value)
.Select(group => string.Concat(group.Select(b => (char)b)))
);
Console.Write(art);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/341845.html
下一篇:如何按日期對物件和屬性進行排序?
