简体   繁体   中英

How to convert a string to ASCII

How do I convert each letter in a string to its ASCII character value?

.NET stores all strings as a sequence of UTF-16 code units. (This is close enough to "Unicode characters" for most purposes.)

Fortunately for you, Unicode was designed such that ASCII values map to the same number in Unicode, so after you've converted each character to an integer, you can just check whether it's in the ASCII range. Note that you can use an implicit conversion from char to int - there's no need to call a conversion method:

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);
}

For Any String try this:

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

It's pretty simple:

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

Now you have an array for all bytes and encoding int is result . If you need to go back, you can go as:

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

In the ASCII enconding each char is represented with 1 byte, however in C# the string type uses 2 bytes per char.

Hence, if you want to keep an ASCII "string" in memory, the most efficient way is to use a byte array. You can always convert it back to string, but remember it will double in size in memory!

string value = new ASCIIEncoding().GetString(bytes);

Try Linq:

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

This will filter out all non ascii characters. Now if you want an equivalent, try the following:

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

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

string str = char.ConvertFromUtf32(65)

Use Convert.ToInt32() for conversion. You can have a look at How to convert string to ASCII value in C# and ASCII values .

You can do it by using LINQ-expression.

  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();
  } 

Here is an extension method based on Jon Skeet's answer:

    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();
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM