如何将字符串转换为ASCII

时间:2011-03-18 06:35:46

标签: c# string ascii

如何将字符串中的每个字母转换为ASCII字符值?

8 个答案:

答案 0 :(得分:23)

.NET将所有字符串存储为UTF-16代码单元序列。 (对于大多数用途,这足够接近“Unicode字符”。)

幸运的是,Unicode的设计使得ASCII值映射到Unicode中的相同数字,因此在将每个字符转换为整数后,您只需检查它是否在ASCII范围内。请注意,您可以使用从charint的隐式转换 - 无需调用转换方法:

string text = "Here's some text including a \u00ff non-ASCII character";
foreach (char c in text)
{
    int unicode = c;
    Console.WriteLine(unicode < 128 ? "ASCII: {0}" : "Non-ASCII: {0}", unicode);
}

答案 1 :(得分:17)

For Any String试试这个:

string s = Console.ReadLine();
foreach( char c in s)
{
    Console.WriteLine(System.Convert.ToInt32(c));
}
Console.ReadKey();

答案 2 :(得分:12)

这很简单:

string s = "ABCD";
byte[] bytes = Encoding.ASCII.GetBytes(s);
int result = BitConverter.ToInt32(bytes, 0);

现在你有一个所有字节的数组,编码intresult。如果你需要回去,你可以去:

int i = result;
byte[] bytes2 = BitConverter.GetBytes(i);
string s2 = Encoding.ASCII.GetString(bytes);

答案 3 :(得分:2)

尝试Linq:

Result = string.Join("", input.ToCharArray().Where(x=> ((int)x) < 127));

这将过滤掉所有非ASCII字符。现在,如果您想要一个等效的,请尝试以下操作:

Result = string.Join("", System.Text.Encoding.ASCII.GetChars(System.Text.Encoding.ASCII.GetBytes(input.ToCharArray())));

答案 4 :(得分:0)

使用Convert.ToInt32()进行转换。您可以查看 How to convert string to ASCII value in C# ASCII values

答案 5 :(得分:0)

您可以使用LINQ表达式来实现。

  public static List<int> StringToAscii(string value)
  {
        if (string.IsNullOrEmpty(value))
            throw new ArgumentException("Value cannot be null or empty.", nameof(value));

        return value.Select(System.Convert.ToInt32).ToList();
  } 

答案 6 :(得分:0)

这是基于 Jon Skeet 的回答的扩展方法:

    public static string ConvertUnicodeStringToAscii(this string text)
    {
        var sb = new StringBuilder();
        foreach (char c in text)
        {
            int unicode = c;
            if (unicode < 128)
            {
                sb.Append(c);
            }
        }
        return sb.ToString();
    }

答案 7 :(得分:-1)

我认为此代码可能对您有所帮助:

string str = char.ConvertFromUtf32(65)