Te recomendamos que pruebes esta respuesta en un entorno controlado antes de pasarlo a producción, saludos.
Solución:
Su array es de byte
primitivos, pero está tratando de llamar a un método en ellos.
No necesita hacer nada explícito para convertir un byte
a una int
sólo:
int i=rno[0];
…ya que no es un abatimiento.
Tenga en cuenta que el comportamiento predeterminado de byte
-para-int
conversión es conservar el signo del valor (recuerde byte
es un tipo firmado en Java). Entonces, por ejemplo:
byte b1 = -100;
int i1 = b1;
System.out.println(i1); // -100
Si estabas pensando en el byte
como sin firmar (156) en lugar de firmado (-100), a partir de Java 8 hay Byte.toUnsignedInt
:
byte b2 = -100; // Or `= (byte)156;`
int = Byte.toUnsignedInt(b2);
System.out.println(i2); // 156
Antes de Java 8, para obtener el valor equivalente en el int
necesitarías enmascarar los bits de signo:
byte b2 = -100; // Or `= (byte)156;`
int i2 = (b2 & 0xFF);
System.out.println(i2); // 156
Solo para completar #1: Si usted hizo desea utilizar los diversos métodos de Byte
por alguna razón (no necesitas estar aquí), podría usar una conversión de boxeo:
Byte b = rno[0]; // Boxing conversion converts `byte` to `Byte`
int i = b.intValue();
O el Byte
constructor:
Byte b = new Byte(rno[0]);
int i = b.intValue();
Pero de nuevo, no necesitas eso aquí.
Solo para completar #2: Si fueron un downcast (por ejemplo, si estaba tratando de convertir un int
a un byte
), todo lo que necesitas es un yeso:
int i;
byte b;
i = 5;
b = (byte)i;
Esto le asegura al compilador que sabe que es un downcast, por lo que no recibe el error “Posible pérdida de precisión”.
byte b = (byte)0xC8;
int v1 = b; // v1 is -56 (0xFFFFFFC8)
int v2 = b & 0xFF // v2 is 200 (0x000000C8)
La mayoría de las veces v2 es la forma que realmente necesita.
si desea combinar los 4 bytes en un solo int, debe hacerlo
int i= (rno[0]<<24)&0xff000000|
(rno[1]<<16)&0x00ff0000|
(rno[2]<< 8)&0x0000ff00|
(rno[3]<< 0)&0x000000ff;
Yo uso 3 operadores especiales |
es el OR lógico bit a bit &
es el AND lógico y <<
es el desplazamiento a la izquierda
en esencia, combino los 4 bytes de 8 bits en un solo int de 32 bits cambiando los bytes en su lugar y juntándolos con OR
También me aseguro de que cualquier promoción de letreros no afectará el resultado con & 0xff
Te mostramos comentarios y valoraciones
Nos encantaría que puedieras mostrar este enunciado si lograste el éxito.