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

duda array bytes

Estas en el tema de duda array bytes en el foro de Java en Foros del Web. Buenas, A ver si alguien me puede echar un cable porque no se como resolver este problema. Resulta que me interesa realizar una numeracion de ...
  #1 (permalink)  
Antiguo 13/05/2014, 06:21
 
Fecha de Ingreso: mayo-2008
Mensajes: 69
Antigüedad: 16 años
Puntos: 0
duda array bytes

Buenas,

A ver si alguien me puede echar un cable porque no se como resolver este problema. Resulta que me interesa realizar una numeracion de 2 bytes, que los valores vayan de 0 a 65535 y luego pasarlo a un array de 2 bytes.

Lo he probado con short's, int's y strings, pero no lo consigo, y tiene que caber en un array de 2 bytes.

¿A alguien se lo ocurre cómo hacerlo?

Gracias
  #2 (permalink)  
Antiguo 13/05/2014, 13:38
 
Fecha de Ingreso: noviembre-2012
Mensajes: 53
Antigüedad: 11 años, 5 meses
Puntos: 1
Exclamación Respuesta: duda array bytes

Buenas los valores de byte en java tienen un rango de -127 a 127

puedes usar short

y si me explicas mejor lo que quieres hacer te podría ayudar por que no lo he entendido muy bien.
  #3 (permalink)  
Antiguo 13/05/2014, 14:13
 
Fecha de Ingreso: mayo-2008
Mensajes: 69
Antigüedad: 16 años
Puntos: 0
Respuesta: duda array bytes

En primer lugar gracias por interesarte. En segundo lugar resulta que estoy implementando el rfc 1350 (trivial ftp) y no se bien bien como construir el número de bloque que está formado por 2 bytes (como se ve en la imagen adjunta). La numeación de los bloques es cíclica y va del 1 a 2^16 = 65535. El problema de hacerlo con un short es que el valor máximo que puede representar 32,767 no me vale, y no puedo hacer un unsigned short.

Definición de short:
short: The short data type is a 16-bit signed two's complement integer. It has a minimum value of -32,768 and a maximum value of 32,767 (inclusive). As with byte, the same guidelines apply: you can use a short to save memory in large arrays, in situations where the memory savings actually matters.

Formato paquete datos
  #4 (permalink)  
Antiguo 14/05/2014, 03:29
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: duda array bytes

Un número en binario sólo es 0 y 1, la diferencia está en cómo se interpreta.

En tu caso si lo único que quieres es tener dos bytes con el número, no hay ningún problema.

Cita:
int i = 65535;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out;
try {
out = new ObjectOutputStream(bos);
out.writeInt(i);
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

byte[] int_bytes = bos.toByteArray();
Haciendo esto obtendrás un array de bytes donde los dos últimos bytes se corresponden con los valores en binario de 0 a 65535.

Si tratas de leer su valor desde java, el decimal que aparece no se corresponde porque java trabaja con complemento a 2.

11111111 Para java es -1, no 255, pero si no tienes que hacer ninguna operación con él te da igual.

https://sites.google.com/site/gencor...unsigned-bytes
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: Ninguno
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 06:24.