De ASCII-waarde van een teken in een C#-tekenreeks ophalen

Denk aan de tekenreeks:

string str="A C# string";

Wat is de meest efficiënte manier om de ASCII-waarde van elk teken in str af te drukken met C#.


Antwoord 1, autoriteit 100%

Hier is een alternatief omdat je de cast niet leuk vindt aan int:

foreach(byte b in System.Text.Encoding.UTF8.GetBytes(str.ToCharArray()))
    Console.Write(b.ToString());

Antwoord 2, autoriteit 92%

Creëer elk karakter naar een int:

for (int i = 0; i < str.length; i++)  
  Console.Write(((int)str[i]).ToString());

Antwoord 3, autoriteit 24%

Dit voorbeeld kan je misschien helpen. door eenvoudig casten te gebruiken, kun je code achter het urdu-teken krijgen.

string str = "عثمان";
        char ch = ' ';
        int number = 0;
        for (int i = 0; i < str.Length; i++)
        {
            ch = str[i];
            number = (int)ch;
            Console.WriteLine(number);
        }

Antwoord 4

Hier is nog een alternatief. Het geeft natuurlijk een slecht resultaat als het invoerteken niet ascii is. Ik heb het niet perf getest, maar ik denkdat het behoorlijk snel zou zijn:

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

Other episodes