in Code & IT

Byte[] para String e vice-versa

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:

string a = (string)b; //em que b é um byte[]

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[]:

System.Text.ASCIIEncoding  encoding = new System.Text.ASCIIEncoding();
byte[] bArray = encoding.GetBytes(str);

e de byte[] para string:

System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
string str = enc.GetString(bArray);

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

Write a Comment

Comment

 

This blog is kept spam free by WP-SpamFree.