Byte[]

12 respostas
marcos.junqueira

Pessoal, to com um problema, preciso fazer um programa pra um trabalho de Redes, então temos que fazer um cliente e um servidor de troca de mensagens, até ai tudo bem… mas o professor definiu que temos q enviar usando bytes e definiu todos os bytes, ou seja, pra que serve cada byte.
O problema é que o programa de cada grupo tem que se comunicar com os dos outros grupos, que podem estar em LP diferentes, e também eu não to sabendo converter uma mensagem em byte[] e depois fazer o inverso, converter de byte[] para mensagem novamente…

Alguém pode me dar uma luz? :?:

12 Respostas

Luca

Olá

O que é LP? Long Play?

E como é a mensagem? Descreva o protocolo.

[]s
Luca

marcos.junqueira

LP = Linguaguem de Programação

aki está a especificação do trabalho…
http://www.dcc.ufla.br/~lcorreia/com174/tp/tpratico2.pdf
os item e) e f) mostram os formatos dos quadros…

cv1

Bom, nao vi nada tecnicamente impossivel ali… onde vc esta tendo problemas, mais especificamente?

marcos.junqueira

o problema está na hora de converter uma msg pra bytes e fazer o contrario depois…
Estou usando getBytes() de String, para pegar um byte[], só que não to sabendo fazer o inverso, pegar os bytes e transformar denovo em String…

T

Não custa nada ler o Javadoc.

String(byte[],String)
Se você estiver com problemas de acessar o Javadoc, veja se alguém instala a documentação do JDK. Ela pode ser baixada a partir de:

http://java.sun.com/j2se/1.4.2/download.html

cv1

Aguardo ansiosamente pela pergunta “o que aconteceu com as minhas cedilhas e acentos!?” daqui a alguns dias :mrgreen:

T

Esse CV… Não deixe o Marcos com cara de ponto de interrogação.

Bom, para o Marcos Junqueira:

Quando você usa “String.getBytes()”, sem nenhum parâmetro, pode ter alguns problemas porque ele dá resultados diferentes de versão para versão, de sistema operacional para sistema operacional, e de locale (“Regional Settings”, ou linguagem - português, inglês, o que seja - em que o sistema operacional está instalado. Para evitar esses problemas, use um parâmetro que evita essa variabilidade.

Para evitar problemas, use sempre String.getBytes(String), e new String(byte[], String), e se possível, para evitar surpresas desagradáveis, o parâmetro “encoding” = “ISO-8859-1”. É que esse parâmetro é quase igual ao que o Windows usa por padrão, e vai ser fácil você entender o que está acontecendo.

byte[] bytes;
String str = "Alô, Conceição!";
bytes = str.getBytes ("ISO-8859-1");
...
str = new String (bytes, "ISO-8859-1");
...

(não se esqueça de “catch” a exceção “UnsupportedEncodingException”)

P.S. Se você estiver imprimindo a saída no console do MS-DOS (no Windows), use o seguinte comando:

chcp 1252

antes de chamar o seu programa, para poder ver os acentos corretamente.

marcos.junqueira

Deixa eu ver se entendi… quando eu uso String.getBytes(“ISO-8859-1”); estou transformando a minha String em um byte[] usando o ISO-8859-1;

E quando eu faço new String(byte[], String) eu estaria usando o byte[] que eu fiz anteriormente para reconstruir minha String original :?:

T

É isso aí. Entendeu direitinho.

marcos.junqueira

Valeu pessoal, muito obrigado! :smiley:

cv1

ISO-8859-1 nao serve pra muita coisa para alfabetos que nao os de origem romana. Use UTF-8 :wink:

smota

Sim sim, é muito importante pro trabalho de redes da faculdade você poder escrever em cirílico ou kanji (alfabeto chinês) :mrgreen:

Criado 19 de junho de 2005
Ultima resposta 20 de jun. de 2005
Respostas 12
Participantes 5