dize düşünün.C# dizesinde bir karakterin ASCII Değerini Alma
cevap
Burada dökme int sevmiyorum çünkü bir alternatiftir:
foreach(byte b in System.Text.Encoding.UTF8.GetBytes(str.ToCharArray()))
Console.Write(b.ToString());
Eğer UTF8 yerine ASCII kullanırsanız, bu doğru olmalıdır .. ya da ascii değerlerini alamayacaksanız, UTF8 değerlerini alırsınız ... – Peter
@Petoj - Bu, ascii'ye dönüştürme konusunda MSDN belgelerinden doğrudan alınır. "Doğru" yol, ConvertToUTF32() 'yi çağırmak olacaktır çünkü bu, karakterlerin kendilerinin doğru kodlanmasıdır. –
Bu MSDN forma çekilebilir ama ben ASCII önce doğru 7 GB karakterleri içerir ve UTF8 çok daha fazla içerir ve ikinci olarak bazı UTF8 karakterleri 2 byte (veya daha fazla) olarak kaydedilir, böylece size katılmıyorum ne char ne daha fazla ne olduğunu belirlemek mümkün ... – Peter
Sadece bir int her bir karakteri döküm:
for (int i = 0; i < str.length; i++)
Console.Write(((int)str[i]).ToString());
Bu, ASCII ile sınırlı olmayacak mı? – bzlm
+1 - 'foreach (str.ToCharArray()' da char c ') kullanılarak yinelenebilir' –
Tek bir yol var mı? –
Bu örnek size yardımcı olabilir. Basit döküm kullanarak urdu karakterinin arkasındaki kodu alabilirsiniz.
string str = "عثمان";
char ch = ' ';
int number = 0;
for (int i = 0; i < str.Length; i++)
{
ch = str[i];
number = (int)ch;
Console.WriteLine(number);
}
Bir "dize", UTF-16 kod birimlerinin sayılan bir dizisidir (bir veya iki tanesi Unicode kod noktasını kodlar), bu UTF-16 kod birimlerini alır. Kod noktaları daha insan tarafından okunabilir. Bunları elde etmek için UTF-32'ye dönüştürün çünkü UTF-32 kod birimleri ve Unicode kod noktaları bire birdir ve aynı değerlere sahiptir. –
İşte başka bir alternatif. Eğer giriş char ascii değilse, elbette kötü bir sonuç verecektir. Test ettim Perf ettik ama oldukça hızlı olacağını düşünüyorum :
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static int GetAsciiVal(string s, int index) {
return GetAsciiVal(s[index]);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static int GetAsciiVal(char c) {
return unchecked(c & 0xFF);
}
"en verimli" tanımlayın. :) Ayrıca, [C#] dizesinin ASCII değerini nasıl alabilirim olası bir kopyası (http://stackoverflow.com/questions/400733/how-to-get-ascii-value-of-string-in-c). Ayrıca, gerçekten ASCII'yi kastediyor musun? – bzlm
Teknik olarak, C# karakterleri ASCII değil UNICODE kullanıyor. –