Byte[] para String e vice-versa

2008-09-30

Algo que geralmente me faz confusão é a conversão de tipos. Especialmente coisas que são supostamente simples, como a conversão de um array de bytes para string, ou uma string para um array de bytes. Éra de, à primeira vista, e tendo em conta a forma como é armazenado um caracter de uma string – é geralmente um byte, em que o valor do byte é o código do caracter – considerar que a convesão poderia ser feita directamente, através de um cast. Algo como:

Pois, mas não dá. E a explicação até é simples – a codificação dos caracteres pode ser do mais diverso (ASCII, UTF7, UTF8, UTF16, UTF32…), e é importante que o programa conheça qual. Assim sendo, é de aproveitar os encoders que o .NET oferece no namespace System.Text.

Para converter de string para byte[]:

e de byte[] para string:

Neste caso é usado a mapeamento de valores para caracteres ASCII.