我正在读取一个文本文件,并将其存储到数组中。在创建数组的过程中,我要求输入字符键和频率计数。我需要能够获取从文件中读取的每个字符的Ascii值。
我尝试过byte[] asciiBytes = Encoding.ASCII.GetBytes(count);
,但由于无法从Characterfrequency()转换而无法使用count
class CharacterFrequency
{
public int Frequency { get; set; }
public char Char { get; set; }
public byte Ascii { get; set; }
public override string ToString()
{
return $"Character: {Char} Frequency: {Frequency}";
}
下面是遍历文件的类。
class Program : CharacterFrequency
{
static void Main(string[] args)
{
var count = File.ReadAllText("wap.txt")
.ToCharArray()
.GroupBy(x => x)
.Select(x => new CharacterFrequency() { Char = x.Key, Frequency = x.Count()
})
.ToArray();
foreach (var item in count)
Console.WriteLine($"{item.Char} {item.Frequency}");
Console.ReadLine();
在foreach中,它应该遍历并打印出每一行上的数据,例如: 角色:A(65)频率:250
答案 0 :(得分:1)
据我所知,可以直接从char
表示中获取ASCII值,如下所示。
Select(x => new CharacterFrequency()
{
Char = x.Key,
Frequency = x.Count(),
Ascii = (byte)x.Key
}
)
答案 1 :(得分:0)
您只需将Char
强制转换为int
内联
foreach (var item in count)
Console.WriteLine($"{item.Char}({(int)item.Char}) {item.Frequency}");
使用输入“ Hello World”,我得到结果
H(72) 1
e(101) 1
l(108) 3
o(111) 2
(32) 1
W(87) 1
r(114) 1
d(100) 1
答案 2 :(得分:0)
我认为最好的选择是这样的:
foreach(byte b in System.Text.Encoding.UTF8.GetBytes(count.ToCharArray()))
{
Console.WriteLine(b.ToString());
}
学分here。