Pregunta

Quiero obtener el valor ASCII de los caracteres en una cadena en C #.

Si mi cadena tiene el valor " 9quali52ty3 " ;, quiero una matriz con los valores ASCII de cada uno de los 11 caracteres.

¿Cómo puedo obtener valores ASCII en C #?

¿Fue útil?

Solución

De MSDN

string value = "9quali52ty3";

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

Ahora tiene una matriz del valor ASCII de los bytes. Obtuve lo siguiente:

57 113 117 97 108 105 53 50 116 121 51

Otros consejos

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

Esto debería funcionar:

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

¿Quieres decir que solo quieres los caracteres alfabéticos y no los dígitos? Así que quieres "calidad" ¿como resultado? Puede usar Char.IsLetter o Char.IsDigit para filtrarlos uno por uno.

string s = "9quali52ty3";
StringBuilder result = new StringBuilder();
foreach(char c in s)
{
  if (Char.IsLetter(c))  
    result.Add(c);
}
Console.WriteLine(result);  // quality
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]);
    }
byte[] asciiBytes = Encoding.ASCII.GetBytes("Y");
foreach (byte b in asciiBytes)
{
    MessageBox.Show("" + b);
}

Este programa aceptará más de un carácter y generará su valor 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);
        }
    }
}

Los respondedores anteriores respondieron la pregunta, pero no proporcionaron la información que el título me llevó a esperar. Tenía un método que devolvía una cadena de un carácter, pero Quería un personaje que pudiera convertir a hexadecimal. El siguiente código demuestra lo que pensé que encontraría con la esperanza de que sea útil para otros.

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

El código anterior muestra lo siguiente en la ventana inmediata:

a£Δ√

a 97 61

& # 163; 163 A3

& # 916; 916 394

& # 8730; 8730 221A

string text = "ABCD";
for (int i = 0; i < text.Length; i++)
{
  Console.WriteLine(text[i] + " => " + Char.ConvertToUtf32(text, i));
}

Si recuerdo correctamente, el valor ASCII es el número de los siete bits inferiores de Unicode número.

Si desea el código de caracteres para cada carácter de la cadena, podría hacer algo como esto:

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

Puede eliminar la BOM utilizando:

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

O en LINQ:

cadena valor = " 9quali52ty3 " ;;

var ascii_values ??= value.Select (x = > (int) x);

var as_hex = value.Select (x = > ((int) x) .ToString (" X02 "));

Quiero obtener el valor ASCII de los caracteres en una cadena en C #.

Todos confieren respuesta en esta estructura. Si mi cadena tiene el valor " 9quali52ty3 " ;, quiero una matriz con los valores ASCII de cada uno de los 11 caracteres.

pero en la consola trabajamos con franqueza, así que obtenemos un carácter e imprimimos el código ASCII si me equivoco, así que corrija mi respuesta.

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

¿Por qué no de la manera fácil pasada de moda?

    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;
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top