C # 'da bir dizedeki karakterlerin ASCII değerini almak istiyorum.
Dizim "9quali52ty3" değerine sahipse, 11 karakterin her birinin ASCII değerlerine sahip bir dizi istiyorum.
C # 'da ASCII değerlerini nasıl alabilirim?
C # 'da bir dizedeki karakterlerin ASCII değerini almak istiyorum.
Dizim "9quali52ty3" değerine sahipse, 11 karakterin her birinin ASCII değerlerine sahip bir dizi istiyorum.
C # 'da ASCII değerlerini nasıl alabilirim?
Yanıtlar:
Gönderen MSDN
string value = "9quali52ty3";
// Convert the string into a byte[].
byte[] asciiBytes = Encoding.ASCII.GetBytes(value);
Artık baytların ASCII değerinin bir dizisine sahipsiniz. Aşağıdakileri aldım:
57113117 97108105 53 50116121 51
Encoding.ASCII
ASCII karakter kümesinde olmayan karakterler için değiştirme karakteri ('?') İçin ASCII kod birimi yayınlayacak şekilde yapılandırılmıştır. Diğer seçenekler - bir istisna atma dahil - Encoding
sınıfta mevcuttur . Ve elbette, diğer karakter kodlamaları - özellikle UTF-8 - de mevcuttur; Aslında istenen ASCII olup olmadığı sorgulanmalıdır.
string s = "9quali52ty3";
foreach(char c in s)
{
Console.WriteLine((int)c);
}
Rakamları değil, yalnızca alfabetik karakterleri istediğinizi mi söylüyorsunuz? Yani sonuç olarak "kalite" mi istiyorsunuz? Bunları birer birer filtrelemek için Char.IsLetter veya Char.IsDigit kullanabilirsiniz.
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]);
}
Dizedeki her karakterin karakter kodunu istiyorsanız, bunun gibi bir şey yapabilirsiniz:
char[] chars = "9quali52ty3".ToCharArray();
Daha önce yanıt verenler soruyu yanıtladılar ancak başlığın beklememe neden olduğu bilgileri sağlamadılar. Tek karakterlik bir dizge döndüren bir yöntemim vardı ama onaltılıya dönüştürebileceğim bir karakter istedim. Aşağıdaki kod, başkalarına yardımcı olması umuduyla bulacağımı düşündüğüm şeyi göstermektedir.
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);
Yukarıdaki kod, hemen pencereye şunu çıkarır:
a£Δ√
bir 97 61
163 £ A3
916 394
√ 8730 221A
Malzeme Listesini şu şekilde kaldırabilirsiniz :
//Create a character to compare BOM
char byteOrderMark = (char)65279;
if (sourceString.ToCharArray()[0].Equals(byteOrderMark))
{
targetString = sourceString.Remove(0, 1);
}
C # 'da bir dizedeki karakterlerin ASCII değerini almak istiyorum.
Bu yapıda herkes cevap veriyor. Dizim "9quali52ty3" değerine sahipse, 11 karakterin her birinin ASCII değerlerine sahip bir dizi istiyorum.
ama konsolda dürüstlükle çalışıyoruz, bu yüzden bir karakter alıyoruz ve yanılıyorsam ASCII kodunu yazdırıyoruz, lütfen cevabımı düzeltin.
static void Main(string[] args)
{
Console.WriteLine(Console.Read());
Convert.ToInt16(Console.Read());
Console.ReadKey();
}
Neden eski moda kolay yol olmasın?
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);
// şimdi daha iyi;)