Como obter o valor ASCII da string em C #
Pergunta
Eu quero obter o valor ASCII de caracteres em uma string em C #.
Se a minha string tem o valor "9quali52ty3", eu quero uma matriz com os valores ASCII de cada um dos 11 caracteres.
Como posso obter valores ASCII em C #?
Solução
A partir MSDN
string value = "9quali52ty3";
// Convert the string into a byte[].
byte[] asciiBytes = Encoding.ASCII.GetBytes(value);
Agora você tem um conjunto do valor ASCII dos bytes. Eu tenho o seguinte:
57 113 117 97 108 105 53 50 116 121 51
Outras dicas
string s = "9quali52ty3";
foreach(char c in s)
{
Console.WriteLine((int)c);
}
Isso deve funcionar:
string s = "9quali52ty3";
byte[] ASCIIValues = Encoding.ASCII.GetBytes(s);
foreach(byte b in ASCIIValues) {
Console.WriteLine(b);
}
Você quer dizer que você só deseja os caracteres alfabéticos e não os dígitos? Então você quer "qualidade" como resultado? Você pode usar Char.IsLetter ou Char.IsDigit para filtrá-los um por um.
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 vai aceitar mais de um personagem e saída de seu 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);
}
}
}
respondedores anteriores ter respondido a pergunta, mas não forneceram as informações que o título levou-me a esperar. Eu tinha um método que retornou uma cadeia de caracteres um, mas Eu queria um personagem que eu poderia converter para hexadecimal. O código a seguir demonstra o que eu pensei que iria encontrar na esperança de que é útil para outras pessoas.
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);
O código acima exibe o seguinte para a janela imediata:
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));
}
Se bem me lembro, o valor ASCII é o número dos menores sete bits do Unicode número.
Se quiser que o charCode para cada caractere na seqüência, você poderia fazer algo parecido com isto:
char[] chars = "9quali52ty3".ToCharArray();
Você pode remover o BOM usando:
//Create a character to compare BOM
char byteOrderMark = (char)65279;
if (sourceString.ToCharArray()[0].Equals(byteOrderMark))
{
targetString = sourceString.Remove(0, 1);
}
Ou em LINQ:
string value = "9quali52ty3";
var ascii_values = value.Select(x => (int)x);
var as_hex = value.Select(x => ((int)x).ToString("X02"));
Eu quero obter o valor ASCII de caracteres em uma string em C #.
resposta Todos conferem nesta estrutura. Se a minha string tem o valor "9quali52ty3", eu quero uma matriz com os valores ASCII de cada um dos 11 caracteres.
mas na consola franqueza que o trabalho assim que nós começamos um char e imprimir o código ASCII se eu errado para que corrija a minha resposta.
static void Main(string[] args)
{
Console.WriteLine(Console.Read());
Convert.ToInt16(Console.Read());
Console.ReadKey();
}
Por que não o caminho mais fácil moda antiga?
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;
}