【问题标题】:Converting Character to Ascii将字符转换为ASCII
【发布时间】:2015-12-16 14:08:22
【问题描述】:

我一直在创建一个代码破解软件,我需要将文本文件中的字符转换为 ascii 数字以允许转换。我在下面留下了我的代码,但有人可以解释一下我该怎么做吗?

using System;
using System.IO;

namespace CipherDecoder
{
    class Program
    {
        static void Main(string[] args)
        {
            string fileText = @"C:/Users/Samuel/Documents/Computer_Science/PaDS/caeserShiftEncodedText";

            string cipherText = File.ReadAllText(fileText);

            string output = @"C:\\Users\Samuel\Documents\Computer_Science\PaDS\output.txt\";

            char[] cipherChars = new char[691];

            int j = 0;

            foreach (char s in cipherText)
            {
                cipherChars[j] = s;

                j++;
            }

            for(int i = 0; i < cipherChars.Length; i++)
            {
                cipherChars[i] = cipherChars[i];
            }
        }
    }
}

【问题讨论】:

  • 有一个从 charint 的隐式转换,以将 UTF-16 代码单元值作为数字提供给您。对于 ASCII 字符,这将与 ASCII 值相同。您当前的代码有点奇怪 - 第二个循环不做任何事情,第一个循环会更简单,如 char[] cipherChars = cipherText.ToCharArray();
  • 很好的解释@JonSkeet

标签: c# ascii


【解决方案1】:

要将 int 值放入 int 数组中,您可以将其作为 LINQ 选择来执行。例如:

 string fileText = @"C:/Users/Samuel/Documents/Computer_Science/PaDS/caeserShiftEncodedText";

 int [] charactersAsInts = File.ReadAllText(fileText).Select(chr => (int)chr).ToArray();

【讨论】:

  • 我收到错误消息:CS1061 C# 'string' 不包含 '' 的定义,并且找不到接受类型为 'string' 的第一个参数的扩展方法 ''(您是否缺少使用指令还是程序集引用?)。
  • 尝试添加 using System.Linq; 以获取 .Select 扩展方法。您可能还需要添加参考。你在使用 VisualStudio 吗?
  • 您可能还需要在项目中添加对 System.Core 的引用(如果使用 VisualStudio)
  • 这确实是错误。一切都已排序并正在工作。干杯
【解决方案2】:

你可以,

var asciiNumbersArray = cipherText.Cast<int>().ToArray();

如果将 char 转换为 int,则会得到十进制的 ascii 数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 2023-03-24
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 2014-10-21
    相关资源
    最近更新 更多