1
我接受了一些將其轉換爲數字像這樣的5x7圖形表示的函數:更快的打印控制檯字符
Console.WriteLine(" ███ "); // byte: 0000 1110
Console.WriteLine("█ █"); // 0001 0001
Console.WriteLine("█ █"); // 0001 0001
Console.WriteLine("█ █"); // 0001 0001
Console.WriteLine("█ █"); // 0001 0001
Console.WriteLine("█ █"); // 0001 0001
Console.WriteLine(" ███ "); // 0000 1110
有人告訴我,它可以使用字節數組來實現更快。 這基本上就是我所做的:
byte[] data = new byte[] { 14, 17, 17, 17, 17, 17, 14 };
BitArray bitData = new BitArray(data);
int bitCounter = 0;
foreach (bool bit in bitData)
{
if (bit)
Console.Write("█");
else
Console.Write(" ");
bitCounter++;
if (bitCounter>7)
{
bitCounter=0;
Console.WriteLine();
}
}
這是比什麼是開始,所以我不能用它慢。 任何人都可以告訴我更好的方法嗎?
更新: StringBuilder確實有幫助,但它會比我原來的代碼慢一點。它仍然基本上在控制檯中使用寫命令7次會減慢我的速度。 我試着用\ n使用1寫命令,但我需要縮進下一行,而不是在縮進空格內擦除。
那麼,當然這是慢的,你有這麼多的'寫'調用。你可以做的是創建一個字符串,並嵌入新行,並嘗試立即將它放在控制檯上。我不知道什麼意思是說你可以更快地使用數組,但可能不是你理解的。 – Pako
你可以使用StringBuilder來創建一個完整的行(或整個輸出),並將其輸出到其屏幕上整體。 – Davio
或者你可以從這個鏈接嘗試類似於示例2的東西:http://www.dotnetperls.com/convert-string-byte-array它似乎在使用數組,但它都回退到輸出一個字符串到控制檯而不是很多 – Pako