Kodowanie używane w obsadzie od char do bajtu
Spójrz na poniższy kod C # (funkcja wyodrębniona zBuildProtectedURLWithValidity
funkcja whttp://wmsauth.org/examples):
byte[] StringToBytesToBeHashed(string to_be_hashed) {
byte[] to_be_hashed_byte_array = new byte[to_be_hashed.Length];
int i = 0;
foreach (char cur_char in to_be_hashed)
{
to_be_hashed_byte_array[i++] = (byte)cur_char;
}
return to_be_hashed_byte_array;
}
Moje pytanie brzmi:Co robi casting z bajtu na char w zakresie kodowania?
Domyślam się, że to naprawdę nie robi nic, jeśli chodzi o Kodowanie, ale czy to oznacza, że używany jest Kodowanie.Default, a więc bajt do zwrócenia będzie zależał od tego, w jaki sposób framework zakoduje ciąg znaków w konkretnym Systemie Operacyjnym?
A poza tym, czy znak jest rzeczywiście większy niż bajt (zgaduję 2 bajty) i faktycznie pominie pierwszy bajt?
Zastanawiałem się nad zastąpieniem tego wszystkiego przez:
Encoding.UTF8.GetBytes(stringToBeHashed)
Co myślisz?