一段简单的代码,找到给定的文本中哪个 ASCII 字符没有出现过
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace FilterAscii
{
class Program
{
static void Main(string[] args)
{
if (args.Length == 0)
{
Console.WriteLine("Usage: AsciiCharCounter <filename>");
return;
}
string filename = args[0];
if (!File.Exists(filename))
{
Console.WriteLine($"File not found: {filename}");
return;
}
bool[] charPresence = new bool[128];
foreach (char c in File.ReadAllText(filename))
{
if (c < 128) charPresence[c] = true;
}
Console.WriteLine("Missing ASCII characters:");
for (int i = 0; i < 128; i++)
{
if (!charPresence[i])
{
Console.WriteLine($"'{(char)i}' (ASCII {i})");
}
}
}
}
}
我用这个工具分析一个Debug BIOS 串口输出结果如下,没有出现过的大部分 ASCII 都是不可见的,只有 $ 和 ^ 这两个可见的没有输出过
