Codificação usada no elenco de char para byte
Dê uma olhada no seguinte código C # (função extraída doBuildProtectedURLWithValidity
função emhttp://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;
}
Minha pergunta é:O que o casting de byte para char faz em termos de codificação?
Eu acho que realmente não faz nada em termos de codificação, mas isso significa que o Coding.Default é o que é usado e assim o byte para retornar dependerá de como o framework irá codificar a string subjacente no sistema operacional específico?
E, além disso, o char é realmente maior que um byte (eu estou supondo 2 bytes) e irá realmente omitir o primeiro byte?
Eu estava pensando em substituir tudo isso por:
Encoding.UTF8.GetBytes(stringToBeHashed)
O que você acha?