Como você converter uma string para um array de bytes em .NET?
Pergunta
Eu tenho uma seqüência que eu preciso para converter a matriz equivalente de bytes no .NET.
Isso deve ser fácil, mas estou tendo uma cãibra cérebro.
Solução
Você precisa para usar um codificação (System.Text.Encoding
) para dizer .NET que você espera como a saída. Por exemplo, em UTF-16 (= System.Text.Encoding.Unicode
) :
var result = System.Text.Encoding.Unicode.GetBytes(text);
Outras dicas
Primeiro trabalho fora qual codificação você deseja: você precisa saber um pouco sobre Unicode em primeiro lugar.
Em seguida descobrir qual System.Text.Encoding
que corresponde ao . Meu Núcleo .NET refcard descreve a maioria dos mais comuns e como obter uma instância (por exemplo, por uma propriedade estática de Encoding
ou ligando para um Encoding.GetEncoding
.
Finalmente, o trabalho para fora se você quiser que todos os bytes de uma vez (que é a maneira mais fácil de trabalhar - chamada Encoding.GetBytes (string) uma vez e está feito) ou se você precisa quebrá-lo em pedaços - caso em que você vai querer usar Encoding.GetEncoder e então codificar um pouco de cada vez . O codificador cuida de manter o estado entre as chamadas, em caso de necessidade de quebrar a meio caminho através de um personagem, por exemplo.
O que codificação você está usando? Konrad entendeu muito bem para baixo, mas há outros lá fora, e você poderá obter resultados pateta com a pessoa errada:
byte[] bytes = System.Text.Encoding.XXX.GetBytes(text)
Onde XXX
pode ser:
ASCII
BigEndianUnicode
Default
Unicode
UTF32
UTF7
UTF8
Como esta:
string test = "text";
byte[] arr = Encoding.UTF8.GetBytes(test);