Question

Je souhaite obtenir la valeur ASCII des caractères d'une chaîne en C #.

Si ma chaîne a la valeur "9quali52ty3", je souhaite un tableau contenant les valeurs ASCII de chacun des 11 caractères.

Comment obtenir les valeurs ASCII en C #?

Était-ce utile?

La solution

De MSDN

string value = "9quali52ty3";

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

Vous avez maintenant un tableau de la valeur ASCII des octets. J'ai eu ce qui suit:

57 113 117 97 108 105 53 50 116 121 51

Autres conseils

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

Cela devrait fonctionner:

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

Voulez-vous dire que vous ne voulez que les caractères alphabétiques et non les chiffres? Donc, vous voulez "qualité" Par conséquent? Vous pouvez utiliser Char.IsLetter ou Char.IsDigit pour les filtrer un par un.

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

Ce programme acceptera plusieurs caractères et affichera leur valeur 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);
        }
    }
}

Les répondants précédents ont répondu à la question mais n'ont pas fourni les informations attendues par le titre. J'ai eu une méthode qui a renvoyé une chaîne d'un caractère mais Je voulais un personnage que je pourrais convertir en hexadécimal. Le code suivant montre ce que je pensais pouvoir trouver dans l’espoir d’être utile aux autres.

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

Le code ci-dessus renvoie les éléments suivants dans la fenêtre immédiate:

a£Δ√

a 97 61

£ 163 A3

? 916 394

v 8730 221A

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

Si je me souviens bien, la valeur ASCII est le nombre des sept bits inférieurs du Unicode numéro.

Si vous voulez le charcode pour chaque caractère de la chaîne, vous pouvez faire quelque chose comme ceci:

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

Vous pouvez supprimer la nomenclature à l'aide de:

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

Ou dans LINQ:

string value = " 9quali52ty3 " ;;

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

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

Je souhaite obtenir la valeur ASCII des caractères d'une chaîne en C #.

Tout le monde confère une réponse dans cette structure. Si ma chaîne a la valeur "9quali52ty3", je souhaite un tableau contenant les valeurs ASCII de chacun des 11 caractères.

mais dans la console, nous travaillons avec franchise, nous obtenons donc un caractère et imprimons le code ASCII si je me trompe, corrigez donc ma réponse.

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

Pourquoi ne pas utiliser la méthode simple et traditionnelle?

    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;
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top