Как получить значение ASCII строки в C#

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

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

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

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

Lars Truijens 30.12.2008 19:35

Я хочу, чтобы Ascii каждого символа из этой строки, Ascii цифр, а также ascii слова "качество"

RBS 30.12.2008 19:36

Вы имеете в виду, что вам нужно числовое значение ASCII каждого символа в строке, предполагая, что вся строка может быть представлена ​​в ASCII. Ваша нынешняя формулировка очень сбивает с толку.

bzlm 24.07.2009 12:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
124
3
461 665
15
Перейти к ответу Данный вопрос помечен как решенный

Ответы 15

string s = "9quali52ty3";
foreach(char c in s)
{
  Console.WriteLine((int)c);
}

Полученные коды являются числами Unicode и потенциально могут содержать коды, отличные от ASCII.

Lars Truijens 22.01.2010 11:17

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

string s = "9quali52ty3";
byte[] ASCIIValues = Encoding.ASCII.GetBytes(s);
foreach(byte b in ASCIIValues) {
    Console.WriteLine(b);
}

Вы имеете в виду, что вам нужны только буквенные символы, а не цифры? Значит, вы хотите получить "качество" в результате? Вы можете использовать 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
string text = "ABCD";
for (int i = 0; i < text.Length; i++)
{
  Console.WriteLine(text[i] + " => " + Char.ConvertToUtf32(text, i));
}

Если я правильно помню, значение ASCII - это количество младших семи бит числа Юникод.

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

char[] chars = "9quali52ty3".ToCharArray();
Ответ принят как подходящий

От 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

Это показывает мне System.Byte []. Вам нужно перебрать символы в слове. Не знаю, как ты заставил это работать. Помог ОП, хотя вот что важно.

Nikos 22.09.2018 12:35

Примечание. Encoding.ASCII настроен на выдачу единицы кода ASCII для символа замены ('?') Для символов, не входящих в набор символов ASCII. Другие варианты, включая создание исключения, доступны в классе Encoding. И, конечно же, доступны и другие кодировки символов, особенно UTF-8; Следует задаться вопросом, действительно ли нужен именно ASCII.

Tom Blodget 11.01.2019 20:53
byte[] asciiBytes = Encoding.ASCII.GetBytes("Y");
foreach (byte b in asciiBytes)
{
    MessageBox.Show("" + b);
}

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

  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 61

163 фунтов стерлингов A3

Δ 916 394

√ 8730 221A

Или в LINQ:

string value = "9quali52ty3";
var ascii_values = value.Select(x => (int)x);
var as_hex = value.Select(x => ((int)x).ToString("X02"));
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]);
    }

это также один из примеров реализации значения ascii для каждого символа в данной строке

mahesh 04.12.2012 11:21

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

//Create a character to compare BOM
char byteOrderMark = (char)65279;
if (sourceString.ToCharArray()[0].Equals(byteOrderMark))
{
    targetString = sourceString.Remove(0, 1);
}

Эта программа примет более одного символа и выведет их значение 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);
        }
    }
}

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

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

но в консоли мы работаем откровенно, поэтому мы получаем символ и печатаем код ASCII, если я ошибаюсь, поэтому, пожалуйста, исправьте мой ответ.

 static void Main(string[] args)
        {
            Console.WriteLine(Console.Read());
            Convert.ToInt16(Console.Read());
            Console.ReadKey();
        }

В этом ответе можно было бы немного пояснить. Если у вас есть коллега, более свободно говорящий по-английски, с уважением вам следует попросить о помощи.

O. Jones 24.06.2017 14:47

Мое объяснение очень простое, потому что мой код очень прост без каких-либо переменных, но использовал простую концепцию, как можно распечатать значение ASCII, просто получить char и преобразовать char в целочисленное значение, поэтому, пожалуйста, вы реализуете это, и если у меня есть ошибка в моем объяснении, поэтому пожалуйста, исправь это спасибо

MA Nadeem 24.06.2017 16:16

Почему не старомодным легким способом?

    public int[] ToASCII(string s)
    {
        char c;
        int[] cByte = new int[s.Length];   / the ASCII string
        for (int i = 0; i < s.Length; i++)
        {
            c = s[i];                        // get a character from the string s
            cByte[i] = Convert.ToInt16(c);   // and convert it to ASCII
        }
        return cByte;
    }
    string nomFile = "9quali52ty3";  

     byte[] nomBytes = Encoding.ASCII.GetBytes(nomFile);
     string name = "";
     foreach (byte he in nomBytes)
     {
         name += he.ToString("X02");
     }
`
     Console.WriteLine(name);

// теперь лучше;)

Хотя этот код может решить вопрос, включая объяснение о том, как и почему это решает проблему, действительно поможет улучшить качество вашего сообщения и, вероятно, приведет к большему количеству голосов за. Помните, что вы отвечаете на вопрос для будущих читателей, а не только для человека, который задает его сейчас. Пожалуйста, редактировать свой ответ, чтобы добавить пояснения и указать, какие ограничения и предположения применяются.

Dharman 19.03.2020 14:42

Выдает ошибку компиляции: «Неожиданный символ». Двух `после ToString, вероятно, не должно быть.

BDL 19.03.2020 17:32

Другие вопросы по теме