web-dev-qa-db-fra.com

Comment avoir ASCII valeur de chaîne en C #

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

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

Comment puis-je obtenir les valeurs ASCII en C #?

90
RBS

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 ans

172
Brig Lamoreaux
string s = "9quali52ty3";
foreach(char c in s)
{
  Console.WriteLine((int)c);
}
29
LeppyR64

Cela devrait fonctionner:

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

Voulez-vous dire que vous ne voulez que les caractères alphabétiques et non les chiffres? Vous voulez donc de la "qualité"? 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
6
Lars Truijens
byte[] asciiBytes = Encoding.ASCII.GetBytes("Y");
foreach (byte b in asciiBytes)
{
    MessageBox.Show("" + b);
}
3
moleatom
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
mahesh

Ce programme acceptera plus d'un caractère et affichera sa 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);
        }
    }
}
3
M hasan

Vous pouvez supprimer le BOM en utilisant:

//Create a character to compare BOM
char byteOrderMark = (char)65279;
if (sourceString.ToCharArray()[0].Equals(byteOrderMark))
{
    targetString = sourceString.Remove(0, 1);
}
2
Md Shahzad Adil
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 numéro des sept bits inférieurs du nombre Unicode .

2
Rauhotz

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

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

Ou dans LINQ:

string value = "9quali52ty3";

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

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

1
ZagNut

Les répondants précédents ont répondu à la question mais n'ont pas fourni les informations auxquelles le titre m'attendait. J'avais une méthode qui renvoyait une chaîne de caractères mais Je voulais un caractère 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

√ 8730 221A

1
Tony Dallimore

Pourquoi pas le moyen facile démodé?

    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;
    }
0
F. Harthoorn

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 veux un tableau avec les valeurs ASCII de chacun des 11 caractères.

mais en console, nous travaillons avec franchise afin d’obtenir un caractère et d’imprimer 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();
        }
0
MA Nadeem