如何获取字符的ASCII值

时间:2019-01-23 15:50:42

标签: c#

我正在读取一个文本文件,并将其存储到数组中。在创建数组的过程中,我要求输入字符键和频率计数。我需要能够获取从文件中读取的每个字符的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

3 个答案:

答案 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