Foros del Web » Programación para mayores de 30 ;) » Java »

problema con array de bytes

Estas en el tema de problema con array de bytes en el foro de Java en Foros del Web. Estoy intentando crear un array de bytes en j2me para enviarlo a traves de un socket pero por algun motivo me da un error de ...
  #1 (permalink)  
Antiguo 08/11/2010, 11:04
 
Fecha de Ingreso: junio-2008
Mensajes: 175
Antigüedad: 14 años
Puntos: 11
problema con array de bytes

Estoy intentando crear un array de bytes en j2me para enviarlo a traves de un socket pero por algun motivo me da un error de "possible loss of precision".
Segun he encontrado por ahi este error se debe cuando le pasas un tipo de dato que no se espera (por ejemplo, imprimir un float cuando lo declaras como double), pero no entiendo porque a mi me lo da si es solo un array:

byte[] message = {0x30, 0x0C, 0x02, 0x01, 0x01, 0x60, 0x07, 0x02, 0x01, 0x03, 0x04, 0x00, 0x80, 0x00};

Lo raro es que solo me sale el error cuando inserto los dos ultimos elementos del array, vamos que si le pongo

byte[] message = {0x30, 0x0C, 0x02, 0x01, 0x01, 0x60, 0x07, 0x02, 0x01, 0x03, 0x04, 0x00}

ya no me da error, ¿alguien sabe a que se puede deber?
  #2 (permalink)  
Antiguo 08/11/2010, 12:03
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 18 años, 8 meses
Puntos: 51
Respuesta: problema con array de bytes

En un array de byte estás metiendo un 128... y byte solo llega hasta 127.
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 09/11/2010, 01:42
 
Fecha de Ingreso: junio-2008
Mensajes: 175
Antigüedad: 14 años
Puntos: 11
Respuesta: problema con array de bytes

Cita:
Iniciado por GreenEyed Ver Mensaje
En un array de byte estás metiendo un 128... y byte solo llega hasta 127.
hola, gracias por tu respuesta. Lo he solucionado poniendo (byte)0x80, tengo que usar siempre este formato en caso de que los valores sean siempre superiores a 128?
  #4 (permalink)  
Antiguo 09/11/2010, 05:08
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 18 años, 8 meses
Puntos: 51
Respuesta: problema con array de bytes

No, no lo entiendes. Lo que te dice es que vas a perder precision por que en realidad 128 no cabe en un byte. Haciendole un cast lo único que consigues es decirle que sí, que sabes que vas a perder precisión y no te importa, pero es que entonces no estás guardando un 128.

En realidad (byte)0x80 es -128.

Si quieres almacenar un 128 (0x80) entonces tienes que usar al menos short, en lugar de byte.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #5 (permalink)  
Antiguo 09/11/2010, 06:24
 
Fecha de Ingreso: junio-2008
Mensajes: 175
Antigüedad: 14 años
Puntos: 11
Respuesta: problema con array de bytes

Cita:
Iniciado por GreenEyed Ver Mensaje
No, no lo entiendes. Lo que te dice es que vas a perder precision por que en realidad 128 no cabe en un byte. Haciendole un cast lo único que consigues es decirle que sí, que sabes que vas a perder precisión y no te importa, pero es que entonces no estás guardando un 128.

En realidad (byte)0x80 es -128.

Si quieres almacenar un 128 (0x80) entonces tienes que usar al menos short, en lugar de byte.

S!
Vale, no habia caido en que java representa los bytes como datos con signo. Existe manera de representar un byte como unsigned? me refiero declarandolo como byte, no como short ya que la funcion de escritura me pide especificamente que le pase por parametro un byte[]

PD. ando aun un poco pez en java
  #6 (permalink)  
Antiguo 09/11/2010, 08:20
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 18 años, 8 meses
Puntos: 51
Respuesta: problema con array de bytes

No. Los byte en Java no pueden ser "sin signo". Si lo ha de tratar un programa en otro lenguaje no debería haber problema, ya que para el seguirá siendo un 128. Si lo ha de tratar un programa en Java, entonces no puedes pasarle un 128 en byte por que tal cosa en Java no existe.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.

Etiquetas: byte
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:52.