String para array de bytes [RESOLVIDO]

3 respostas
jedi13

Oi Pessoal,

Estou tentando passar uma String para um array de bytes. Porém, o array fica com 2 bytes a mais do que deveria, por exemplo, um string de 8 caracteres está ficando com 10 bytes. Alguma idéia do porque isto está acontecendo?

OBS: estou usando:

ByteArrayOutputStream bOut = new ByteArrayOutputStream(); DataOutputStream dOut = new DataOutputStream(bOut); dOut.writeUTF(this.idTerminal); return bOut.toByteArray();

Obrigado,
Fabio

3 Respostas

andredeividi

Assim

byte [] bytes =  str.toCharArray();

Abraço

T
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
 DataOutputStream dOut = new DataOutputStream(bOut);
 dOut.writeUTF(this.idTerminal);
 return bOut.toByteArray();

Quando você usa writeUTF, ele pega sua string, põe o tamanho como um inteiro de 4 bytes, e depois os valores. Exemplo:

String s = “abcde”;
Usando writeUTF, ele escreveria os bytes 0x00, 0x00, 0x00, 0x05 (indicando que a string tem 5 caracteres), 0x61, 0x62, 0x63, 0x64 e 0x65 (os caracteres a, b, c, d, e)

jedi13

Obrigado pela ajuda.

Eu estou usando str.getBytes("UTF8");
que retorna um array de bytes considerando cada caracter com 8 bits, que era o resultado que eu precisava. Obrigado de qualquer modo pela ajuda.

Fabio

Criado 16 de julho de 2007
Ultima resposta 16 de jul. de 2007
Respostas 3
Participantes 3