Domanda

Voglio ottenere il valore ASCII dei caratteri in una stringa in C #.

Se la mia stringa ha il valore "9quali52ty3", voglio un array con i valori ASCII di ciascuno degli 11 caratteri.

Come posso ottenere valori ASCII in C #?

È stato utile?

Soluzione

Da MSDN

string value = "9quali52ty3";

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

Ora disponi di un array del valore ASCII dei byte. Ho ottenuto quanto segue:

57 113 117 97 108 105 53 50 116 121 51

Altri suggerimenti

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

Questo dovrebbe funzionare:

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

Vuoi dire che vuoi solo i caratteri alfabetici e non le cifre? Quindi vuoi "qualità" di conseguenza? Puoi utilizzare Char.IsLetter o Char.IsDigit per filtrarli uno per 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);
}

Questo programma accetta più di un carattere e genera il loro valore 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);
        }
    }
}

I rispondenti precedenti hanno risposto alla domanda ma non hanno fornito le informazioni che il titolo mi ha portato ad aspettarmi. Avevo un metodo che restituiva una stringa di un carattere ma Volevo un personaggio che avrei potuto convertire in esadecimale. Il seguente codice dimostra ciò che pensavo di trovare nella speranza che fosse utile per gli altri.

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

Il codice sopra riportato genera quanto segue nella finestra immediata:

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

Se ricordo bene, il valore ASCII è il numero dei sette bit inferiori di Unicode numero.

Se vuoi il codice di accesso per ogni carattere nella stringa, puoi fare qualcosa del genere:

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

Puoi rimuovere la BOM utilizzando:

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

O in LINQ:

valore stringa = " 9quali52ty3 " ;;

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

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

Voglio ottenere il valore ASCII dei caratteri in una stringa in C #.

Tutti conferiscono una risposta in questa struttura. Se la mia stringa ha il valore "9quali52ty3", voglio un array con i valori ASCII di ciascuno degli 11 caratteri.

ma in console lavoriamo francamente quindi otteniamo un carattere e stampiamo il codice ASCII se sbaglio, quindi per favore correggi la mia risposta.

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

Perché non alla vecchia maniera semplice?

    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;
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top