Chcę uzyskać wartość ASCII znaków w ciągu w C #.
Jeśli mój ciąg ma wartość „9quali52ty3”, chcę mieć tablicę z wartościami ASCII każdego z 11 znaków.
Jak mogę uzyskać wartości ASCII w C #?
Chcę uzyskać wartość ASCII znaków w ciągu w C #.
Jeśli mój ciąg ma wartość „9quali52ty3”, chcę mieć tablicę z wartościami ASCII każdego z 11 znaków.
Jak mogę uzyskać wartości ASCII w C #?
Odpowiedzi:
Z MSDN
string value = "9quali52ty3";
// Convert the string into a byte[].
byte[] asciiBytes = Encoding.ASCII.GetBytes(value);
Masz teraz tablicę wartości ASCII bajtów. Otrzymałem następujące informacje:
57 113 117 97 108 105 53 50 116 121 51
Encoding.ASCII
jest skonfigurowany do emitowania jednostki kodu ASCII dla znaku zastępczego („?”) Dla znaków spoza zestawu znaków ASCII. Inne opcje - w tym zgłaszanie wyjątku - są dostępne w Encoding
klasie. Oczywiście dostępne są także inne kodowania znaków - zwłaszcza UTF-8; Należy się zastanowić, czy faktycznie potrzebny jest ASCII.
string s = "9quali52ty3";
foreach(char c in s)
{
Console.WriteLine((int)c);
}
Czy masz na myśli tylko znaki alfabetu, a nie cyfry? Chcesz w rezultacie uzyskać „jakość”? Możesz użyć Char.IsLetter lub Char.IsDigit, aby odfiltrować je jeden po drugim.
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]);
}
Jeśli chcesz mieć kod znaków dla każdego znaku w ciągu, możesz zrobić coś takiego:
char[] chars = "9quali52ty3".ToCharArray();
Wcześniej respondenci odpowiedzieli na pytanie, ale nie podali informacji, których tytuł kazał mi oczekiwać. Miałem metodę, która zwracała jeden ciąg znaków, ale chciałem znak, który mógłbym przekonwertować na szesnastkowy. Poniższy kod ilustruje to, co moim zdaniem znajdę, mając nadzieję, że będzie to pomocne dla innych.
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);
Powyższy kod wyświetla następujące informacje w bezpośrednim oknie:
a£Δ√
a 97 61
163 zł A3
Δ 916 394
√ 8730 221A
Możesz usunąć zestawienie komponentów za pomocą:
//Create a character to compare BOM
char byteOrderMark = (char)65279;
if (sourceString.ToCharArray()[0].Equals(byteOrderMark))
{
targetString = sourceString.Remove(0, 1);
}
Chcę uzyskać wartość ASCII znaków w ciągu w C #.
Wszyscy udzielają odpowiedzi w tej strukturze. Jeśli mój ciąg ma wartość „9quali52ty3”, chcę mieć tablicę z wartościami ASCII każdego z 11 znaków.
ale w konsoli pracujemy szczerze, więc otrzymujemy znak i drukujemy kod ASCII, jeśli się pomylę, więc popraw odpowiedź.
static void Main(string[] args)
{
Console.WriteLine(Console.Read());
Convert.ToInt16(Console.Read());
Console.ReadKey();
}
Dlaczego nie staromodną prostą drogą?
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;
}
string nomFile = "9quali52ty3";
byte[] nomBytes = Encoding.ASCII.GetBytes(nomFile);
string name = "";
foreach (byte he in nomBytes)
{
name += he.ToString("X02");
}
`
Console.WriteLine(name);
// teraz jest lepiej;)