Как получить ASCII-значение строки в C # - PullRequest
92 голосов
/ 30 декабря 2008

Я хочу получить значение ASCII символов в строке в C #.

Если моя строка имеет значение «9quali52ty3», я хочу массив со значениями ASCII каждого из 11 символов.

Как я могу получить значения ASCII в C #?

Ответы [ 14 ]

177 голосов
/ 30 декабря 2008

С MSDN

string value = "9quali52ty3";

// Convert the string into a byte[].
byte[] asciiBytes = Encoding.ASCII.GetBytes(value);

Теперь у вас есть массив значений байтов ASCII. Я получил следующее:

57 113 117 97 108 105 53 50 116 121 51

30 голосов
/ 30 декабря 2008
string s = "9quali52ty3";
foreach(char c in s)
{
  Console.WriteLine((int)c);
}
21 голосов
/ 30 декабря 2008

Это должно работать:

string s = "9quali52ty3";
byte[] ASCIIValues = Encoding.ASCII.GetBytes(s);
foreach(byte b in ASCIIValues) {
    Console.WriteLine(b);
}
6 голосов
/ 30 декабря 2008

Вы хотите сказать, что вам нужны только буквы, а не цифры? Таким образом, вы хотите "качество" в результате? Вы можете использовать Char.IsLetter или Char.IsDigit, чтобы отфильтровать их один за другим.

string s = "9quali52ty3";
StringBuilder result = new StringBuilder();
foreach(char c in s)
{
  if (Char.IsLetter(c))  
    result.Add(c);
}
Console.WriteLine(result);  // quality
3 голосов
/ 07 марта 2014

Эта программа примет более одного символа и выведет их значение ASCII:

using System;
class ASCII
{
    public static void Main(string [] args)
    {
        string s;
        Console.WriteLine(" Enter your sentence: ");
        s = Console.ReadLine();
        foreach (char c in s)
        {
            Console.WriteLine((int)c);
        }
    }
}
3 голосов
/ 04 декабря 2012
string value = "mahesh";

// Convert the string into a byte[].
byte[] asciiBytes = Encoding.ASCII.GetBytes(value);

for (int i = 0; i < value.Length; i++)


    {
        Console.WriteLine(value.Substring(i, 1) + " as ASCII value of: " + asciiBytes[i]);
    }
3 голосов
/ 21 июля 2011
byte[] asciiBytes = Encoding.ASCII.GetBytes("Y");
foreach (byte b in asciiBytes)
{
    MessageBox.Show("" + b);
}
2 голосов
/ 09 марта 2013

Вы можете удалить спецификацию , используя:

//Create a character to compare BOM
char byteOrderMark = (char)65279;
if (sourceString.ToCharArray()[0].Equals(byteOrderMark))
{
    targetString = sourceString.Remove(0, 1);
}
2 голосов
/ 30 сентября 2011

Ранее респонденты ответили на вопрос, но не предоставили информацию, которую заголовок заставил меня ожидать. У меня был метод, который возвратил одну символьную строку, но Я хотел символ, который я мог бы преобразовать в шестнадцатеричный. Следующий код демонстрирует то, что я думал найти в надежде, что это поможет другим.

  string s = "\ta£\x0394\x221A";   // tab; lower case a; pound sign; Greek delta;
                                   // square root  
  Debug.Print(s);
  char c = s[0];
  int i = (int)c;
  string x = i.ToString("X");
  c = s[1];
  i = (int)c;
  x = i.ToString("X");
  Debug.Print(c.ToString() + " " + i.ToString() + " " + x);
  c = s[2];
  i = (int)c;
  x = i.ToString("X");
  Debug.Print(c.ToString() + " " + i.ToString() + " " + x);
  c = s[3];
  i = (int)c;
  x = i.ToString("X");
  Debug.Print(c.ToString() + " " + i.ToString() + " " + x);
  c = s[4];
  i = (int)c;
  x = i.ToString("X");
  Debug.Print(c.ToString() + " " + i.ToString() + " " + x);

Приведенный выше код выводит следующее окно:

a£Δ√

97 97

£ 163 A3

Δ 916 394

√ 8730 221A

2 голосов
/ 30 декабря 2008

Если вам нужен код для каждого символа в строке, вы можете сделать что-то вроде этого:

char[] chars = "9quali52ty3".ToCharArray();
...